Как я могу создать горизонтальную платформу в Farseer Physics Engine, которая могла бы сталкиваться с мячом только тогдаC#

Место общения программистов C#
Anonymous
Как я могу создать горизонтальную платформу в Farseer Physics Engine, которая могла бы сталкиваться с мячом только тогда

Сообщение Anonymous »

Я пробовал много разных способов создать платформу, которая может сталкиваться с мячом только тогда, когда мяч находится над платформой, но редко это не работает, и мяч движется через платформу, когда мяч падает сверху на платформу.
Мяч должен иметь возможность двигаться через платформу только тогда, когда он движется вверх, пока он все еще находится под платформой. Тогда мяч должен пройти через платформу, не сталкиваясь с платформой. Кроме того, когда мяч касается края платформы и когда мяч не полностью над платформой, мяч должен двигаться через платформу, не сталкиваясь.

Код: Выделить всё

Body Platform, Ball;

Ball = BodyFactory.CreateCircle(world, 0.10f, 2.0f);
Ball.BodyType = BodyType.Dynamic;
Ball.Position = new Vector2(BallPosition.X, BallPosition.Y);
Ball.Rotation = 0f;
Ball.IsSensor = false;

Platform = BodyFactory.CreateEdge(world, new Vector2(StartPosition.X, StartPosition.Y), new Vector2(EndPosition.X, EndPosition.Y));
Platform.BodyType = BodyType.Static;
Platform.IsSensor = false;
Platform.IgnoreCollisionWith(Ball);
Я вызываю Platform.IgnoreCollisionWith(Ball), когда мяч находится близко к платформе и под платформой, чтобы мяч мог перемещаться через платформу.
Я вызываю Platform.RestoreCollisionWith(Ball), когда мяч полностью находится над платформой, чтобы мяч не мог пройти через платформу, когда он касается платформы.
Что я могу сделать, чтобы мяч не случайно перемещается по платформе, когда мяч падает сверху на платформу?

Вернуться в «C#»