当用户触摸屏幕时,会创建一个 sprite,并且可以拖动它直到用户抬起手指。在这一点上,一个物理体被附加到精灵上,这样它就会落到屏幕的底部。但是,当精灵与另一个精灵/身体碰撞时,我需要它停止移动。如何检查创建的精灵与任何其他身体/精灵(墙壁和任何其他创建的)之间的碰撞?
问问题
1945 次
3 回答
1
AndEngine 中实现了一个相当简单的碰撞检测。查看方法collidesWith(IShape pOtherShape)
有人对其进行了改进,使其适用于透明区域,搜索像素完美碰撞检测。
您还可以使用物理引擎,请参阅sensor。
于 2012-06-28T12:09:44.407 回答
0
虽然计算面积会起作用,但我正在处理如此多的碰撞,我需要一个更好的方法。花了很多时间,但我终于弄清楚了如何使用 ContactListener (这确实是我所追求的。当有人真正需要做的只是解释一下时,为什么这类问题总是被否决一个新手???)无论如何,为了参考可能会看到这个问题的其他人,在您的 ContactListener 中,您可以使用如下代码:
public void beginContact(Contact contact) {
if(fillerNum>-1 && contact.getFixtureA().getBody().getUserData()!=null && contact.getFixtureB().getBody().getUserData()!=null){
String x1 = (String) contact.getFixtureA().getBody().getUserData();
String x2 = (String) contact.getFixtureB().getBody().getUserData();
if((x1.equals("fill")&&!x2.equals("dest"))||(x2.equals("fill"))&&!x1.equals("dest")){ //If a filler hits a stationary
//Log.e("Contact",x1 + " " + x2);
createStationaryFiller();
}
if((x1.equals("dest")&&x2.equals("fill"))||(x1.equals("fill")&&x2.equals("dest"))){ //If a destroyer hits a filler
destroyFiller();
}
}
}
设置成长中的实体让用户数据“填充”,而固定的实体让用户数据“统计”。我还有其他一些用户数据为“dest”的机构。这样,您可以看到哪两个发生碰撞并做出相应的反应。不明白的给我留言。我可以帮助那些不熟悉这种事情的人。
于 2012-07-01T08:07:42.287 回答