Box2D Contact Listener Fixtures订单[英] box2d contact listener fixtures order

问题描述

我试图了解它是如何工作的.

在我的游戏中我使用box2d物理学,处理联系人我使用联系人侦听器,示例:

ContactListener contactListener = new ContactListener()
{
    @Override
    public void beginContact(Contact contact)
    {
        final Fixture x1 = contact.getFixtureA();
        final Fixture x2 = contact.getFixtureB(); 

        if (x1.getBody().getUserData() != null && x2.getBody().getUserData() != null)
        {                   
            if (x1.getBody().getUserData().equals("player"))
            {                                               
                player.increaseFootContacts();
            }
        }
    }

和此处的问题,那些灯具中有什么顺序吗? (x1或x2)在2次测试后,我发现在这种情况下,我的播放器将是x1等对象x2,我还应该检查相反的顺序吗? (如果x2是玩家等)?

推荐答案

否,没有保证哪种夹具.您必须检查这两种可能性,如下所示:

if ( (userdataA.equals("player") && userDataB.equals("ground")) ||
     (userdataA.equals("ground") && userDataB.equals("player")) )
         player.increaseFootContacts();

本文地址:https://www.itbaoku.cn/post/978596.html