【发布时间】:2011-11-28 10:27:46
【问题描述】:
我想在类似乒乓球的游戏中进行非常简单的碰撞检测。 球是正方形,桨(球拍)是矩形。
我有两个实体进入,我可以在其中获取当前 X 和 Y 位置,以及位图高度和宽度。哪种方法最简单?
我有这个代码:
public void getCollision(Entity enitityOne, Entity enitityTwo){
double eventCoordX = (enitityOne.getCenterX() - (enitityTwo.getBitmapWidth() / 2));
double eventCoordY = (enitityOne.getCenterY() - (enitityTwo.getBitmapHeight() / 2));
double X = Math.abs(enitityTwo.getxPos() - eventCoordX);
double Y = Math.abs(enitityTwo.getyPos() - eventCoordY);
if(X <= (enitityTwo.getBitmapWidth()) && Y <= (enitityTwo.getBitmapHeight())){
enitityOne.collision();
enitityTwo.collision();
}
}
但我很盲目,这只适用于桨的中间而不是两侧。 问题是我看不到代码错在哪里。 有人吗? 有人有更好的主意吗?
【问题讨论】:
-
我发现绘制正常情况和边缘情况的图表非常有用。
-
Joakim、getBitmapWidth 和 getBitmapHeight 返回实体的实际大小?我问这个是因为实体可以有一个边框,而这个边框不是这个大小的总和。
-
Bruno - 是的,它返回位图的实际大小,我已经仔细检查过 ;-)
标签: android collision-detection