你如何检测一个精灵是否在另一个精灵内?

时间:2012-07-05 07:03:21

标签: android box2d sprite andengine overlap

我正在使用AndEngine和Box2d制作游戏。精灵/物体随机生成并放置在场景中。我知道我可以计算出区域,看看它们是否重叠,但这似乎很费劲。有没有一种简单的方法来检测是否在另一个内部创建了一个精灵/身体?类似的东西:

boolean outside = false;
while(!outside){
try{
randx = random.nextInt(650) + 25;
randy = random.nextInt(400) + 25;
sprite = new Sprite(randx,randy,spriteTR,getVertexBufferObjectManager())
scene.attachChild(sprite);
outside = true;
}catch(){}

或者尝试/捕获不起作用?

1 个答案:

答案 0 :(得分:0)

是的,您需要做的是创建两个精灵,然后进行碰撞检测。有一种简单的方法可以通过box2d实现这一目标和更复杂的方法。

简单方法:

sprite1.collidesWith(sprite2);

如果两个精灵彼此接触,哪个应该返回。

通过Box2d,你可以使用一种叫做 ContactListener 的东西来检测碰撞。

            ContactListener contactListener = new ContactListener()
            {
                    @Override
                    public void beginContact(Contact contact)
                    {   
                    }

                    @Override
                    public void endContact(Contact contact)
                    {  
                    }

                    @Override
                    public void preSolve(Contact contact, Manifold oldManifold)
                    {
                    }

                    @Override
                    public void postSolve(Contact contact, ContactImpulse impulse)
                    {  
                    }
            };

在beginContact中,您将需要执行代码以再次随机化sprite的位置(或者您想要使用的任何其他算法)。其他方法为您提供了额外的功能,例如,当两个对象相互重叠时,您可以使用endContact。

有关详细信息和详细教程,请参阅:http://www.andengine.org/forums/tutorials/contact-listener-t5903.html