Странный баг с коллизией

277
30 июля 2017, 07:03

Доброе утро, совсем недавно начал разрабатывать игру на c# + monogame. При разработке класса игрока заметил баг с коллизией. При падении между игроком и землей остается пространство в 1px. Попрыгав немного - оно пропадает, а потом, вновь появляется. Вот как это выглядит:

Код отвечающий за коллизии:

public Rectangle Collision
{
    get => new Rectangle((int)_pos.X, (int)_pos.Y, _w, _h);
}
//Only for player entity
public Rectangle GroundCollision
{
    get => new Rectangle((int)_pos.X, (int)_pos.Y+_w, _w, 1);
}

Код отвечающий за движение игрока:

public void Update()
{
    if (_movable)
    {
        Vector2 oldPos = _pos;
        _pos += new Vector2(_vel, -_acc);
        if(_pos.Y >= 96)
        {
            bool c = Collides;
        }
        if (Grounded)
        {
            _pos += new Vector2(0, _acc);
            _acc = 0;
        }
        /*if (Collides)
        {
            _pos = oldPos;
        }*/
    }
}
//Entity Methods
protected void _Move(float dir, float delta)
{
    _vel = (float) _speed * dir * delta;
}
protected void _Gravity(float delta)
{
    float fallspeed = (float) Math.Round(Phys.gravity * delta * -5f);
    if (_acc - fallspeed >= 0)
        _acc = fallspeed;
    else if (_acc >= 0)
        _acc = 0;
}
protected void _Jump(float delta)
{
    _acc += _jumpForce * delta * 10f;
}

Есть ли способы исправить это парение над землей?

READ ALSO
Как узнать значение в колонке с автоинкрементом?

Как узнать значение в колонке с автоинкрементом?

Есть DataTable dtВ нем создана колонка:

356
Проверка на пустой запрос - C#

Проверка на пустой запрос - C#

У меня есть ComboBox1 и ComboBox2Данные для ComboBox берутся из LocalDB и эти два элемента управления связанны

406
Разбить строку js

Разбить строку js

Всем привет

287
Удалить option из select с помощью JS

Удалить option из select с помощью JS

Как удалить option c id="2" из select

573