我正在使用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(){}
或者尝试/捕获不起作用?
答案 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