设置在box2d和engine中启用的联系人 [英] Set contact enabled in box2d andengine

查看:93
本文介绍了设置在box2d和engine中启用的联系人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何禁用box2d(Andengine)中两个物体之间的接触.我已经使用过contact.setEnabled(false),但这对我不起作用.我在下面提供了代码以供参考.

How to disable the contact between two bodies in box2d (Andengine). I have used contact.setEnabled(false) but this was not working for me. I have given code below for reference.

    @Override
    public void beginContact(final Contact pContact) 
    {
        final Fixture fixtureA = pContact.getFixtureA();
        final Body bodyA = fixtureA.getBody();
        final Object userDataA = bodyA.getUserData();

        final Fixture fixtureB = pContact.getFixtureB();
        final Body bodyB = fixtureB.getBody();
        final Object userDataB = bodyB.getUserData();


        if(userDataA==null || userDataB==null)
            return;


        if(userDataA.equals(target) && userDataB.equals(ball)
        {   
              pContact.setEnabled(false);             

            }               
    }

推荐答案

    @Override
    public void preSolve(Contact contact, Manifold oldManifold)
    {
        PhysicsConnectorManager mPC =     this.mPhysicsWorld.getPhysicsConnectorManager();
        Body targetBody = mPC.findBodyByShape(target);
        Body ballBody = mPC.findBodyByShape(ball);
        if (contact.getFixtureA().getBody() == targetBody && contact.getFixtureB().getBody() == ballBody)
        {
            contact.setEnabled(false);
        }
        else
        {
            contact.setEnabled(true);
        }
    }

这篇关于设置在box2d和engine中启用的联系人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆