Android 如何知道碰撞发生在车身的右侧还是底部

Android 如何知道碰撞发生在车身的右侧还是底部,android,andengine,collision-detection,collision,game-physics,Android,Andengine,Collision Detection,Collision,Game Physics,我正在创建一个andengine游戏(参考本教程),在这个游戏中,我的主要角色行走时被顶部掉落的砖块击中。如果他被掉落的砖头击中,他就会死。但是,一旦砖块落地,主要角色就可以触摸砖块并在其上跳跃。现在我知道如何找到两具尸体是否相互接触。但是如何确定触点是在字符的上方还是身体的左侧或右侧 我用于联系的代码如下 private ContactListener contactListener() { ContactListener contactListener = new ContactLi

我正在创建一个andengine游戏(参考本教程),在这个游戏中,我的主要角色行走时被顶部掉落的砖块击中。如果他被掉落的砖头击中,他就会死。但是,一旦砖块落地,主要角色就可以触摸砖块并在其上跳跃。现在我知道如何找到两具尸体是否相互接触。但是如何确定触点是在字符的上方还是身体的左侧或右侧

我用于联系的代码如下

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


            Vector2[] contactPoints = contact.getWorldManifold().getPoints();

            System.out.println("the points are as ::"+contactPoints);


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

                if (x1.getBody().getUserData().equals("platform2") && x2.getBody().getUserData().equals("player"))
                {
                    engine.registerUpdateHandler(new TimerHandler(0.2f, new ITimerCallback()
                    {                                   
                        public void onTimePassed(final TimerHandler pTimerHandler)
                        {
                            pTimerHandler.reset();
                            engine.unregisterUpdateHandler(pTimerHandler);
                            x1.getBody().setType(BodyType.DynamicBody);
                        }
                    }));
                }

                if (x1.getBody().getUserData().equals("platform3") && x2.getBody().getUserData().equals("player"))
                {
                    x1.getBody().setType(BodyType.DynamicBody);
                }
            }
        }

        public void endContact(Contact contact)
        {
            final Fixture x1 = contact.getFixtureA();
            final Fixture x2 = contact.getFixtureB();



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

        public void preSolve(Contact contact, Manifold oldManifold)
        {

        }

        public void postSolve(Contact contact, ContactImpulse impulse)
        {

        }
    };
    return contactListener;
}

请给我一些建议。

这对你有足够的帮助,还是你需要更多关于身体接触方法的信息

public boolean areBodiesContacted(Body pBody1, Body pBody2,
Contact pContact)
{
if(pContact.getFixtureA().getBody().equals(pBody1) ||
       pContact.getFixtureB().getBody().equals(pBody1))
   if(pContact.getFixtureA().getBody().equals(pBody2) ||
           pContact.getFixtureB().getBody().equals(pBody2))
       return true;
return false;
}