Как просчитать столкновение игрока с каждым объектом на сцене?

Всем привет! Имеется сцена, а на ней несколько объектов (платформ). Есть класс World, содержащий в себе список таких платформ. Чтобы просчитать столкновение игрока и платформы я использую следующий код:

foreach (var platform in world.platforms)
            if (Position.Y + Height / 2 > platform.Start.Y && Position.X + Width / 2 > platform.Start.X && Position.X - Width / 2 < platform.End.X)
            {
                OnGroundCollision(platform.Start.Y - Height / 2);
                readyToJump = true;
            }

Однако при выполнении этого кода, если игрок перейдет под платформу, находящуюся выше него, он телепортируется на эту самую платформу, хотя должен идти дальше. В чем проблема?

Класс платформы:

public class Platform
{
    public Point Start { get; set; }
    public Point End { get; set; }
    public int Width { get; set; }
    public Platform(Point start, int width)
    {
        Start = start;
        Width = width;
        End = new Point(Start.X + Width, Start.Y);
    }
}

Метод, если обнаруживается коллизия:

public void OnGroundCollision(float groundY)
        {
            if (Velocity.Y < -float.Epsilon)
                return;
            Position = new PointF(Position.X, groundY - 0.0001f);
            Velocity = new PointF(Velocity.X, -Velocity.Y * Spring);
        }

Ответы (0 шт):