【发布时间】:2014-06-03 07:02:24
【问题描述】:
我正在尝试让 SFML.NET 与 Box2DX 一起使用。
我正在制作一个简单的乒乓球游戏,只需要使用 Box2DX 的碰撞检测和碰撞回调。
我已经用我自己的覆盖了 ContactListener,它工作正常。问题是当我使用 body.SetUserData() 并从 SFML.NET 传入 Sprite 对象时,我不知道如何比较哪些 Sprite 碰撞。
这是我现在拥有的,但它不起作用:
class MyContactListener : ContactListener
{
public override void Add(ContactPoint point)
{
Sprite spriteA = (Sprite)point.Shape1.GetBody().GetUserData();
Sprite spriteB = (Sprite)point.Shape2.GetBody().GetUserData();
if (spriteA == spriteB || spriteB == spriteA)
Console.WriteLine("Same sprites colliding.");
else
Console.WriteLine("Different sprites colliding.");
}
public override void Persist(ContactPoint point) { }
public override void Remove(ContactPoint point) { }
public override void Result(ContactResult point) { }
}
当添加一个联系人时,这总是会打印“不同的精灵碰撞”,即使精灵是相同的。
我想传入 Sprite 对象,因为我需要使用 body.GetUserData();
【问题讨论】:
标签: c# box2d collision-detection sfml