gpt4 book ai didi

java - Box2D 碰撞不会调用我自己的 CollisionListener

转载 作者:行者123 更新时间:2023-12-02 05:19:11 24 4
gpt4 key购买 nike

我想使用 Box2Ds 碰撞检测来检查玩家是否与某些物体发生碰撞。因此,我创建了一个类并实现了 CollisionListener 类,这样我就可以使用 beginContact() 方法来检查玩家是否与某些物体发生碰撞。现在我只想在控制台中打印这个方法是否有效。它不是。这是我的代码:

我创建了一个类MyCollisionListener,它实现了CollisionListener,如下所示:

在类Play中:

// ...
private World world;
private ContactListener contactlistener;

public Play(GameStateManager gsm) {
super(gsm);

world = new World(new Vector2(0, -1), true);
world.setContactListener(contactlistener);
// ...

我的类MyContactListener:

public class MyContactListener implements ContactListener {

public MyContactListener() {}

@Override
public void beginContact(Contact contact) {
System.out.println("Contact!");
}

@Override
public void endContact(Contact contact) {
// TODO Auto-generated method stub
}


@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}


@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
}

由于某种原因,碰撞不会调用 MyCollisionListener 中的 beginContact 方法。为什么?

最佳答案

如果您的代码不缺少一些步骤,由于示例的缩短,您将传递 null 作为联系人监听器:

private World world;
private ContactListener contactlistener;

public Play(GameStateManager gsm) {
super(gsm);
world = new World(new Vector2(0, -1), true);
contactlistener = new MyContactListener(); // XXX
world.setContactListener(contactlistener);

关于java - Box2D 碰撞不会调用我自己的 CollisionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com