我的游戏有两个类,它们都会产生精灵,唯一的区别是它们的精灵在不同的方向移动。
public void newSprite(float x,float y){
Sprite sprite= Pools.obtain(Sprite.class);
sprite.set(Mysprite);
sprite.setPosition(x,y);
arrayList.add(sprite);
}
if(condition==true){
newSprite(); //calls the method to spawn a new sprite
}
然而,如何检测来自另一个类的精灵是否与此碰撞,从这两个类中产生了很多精灵。我的想法是通过使用池为每个精灵创建一个矩形。
答案 0 :(得分:0)
<强>参数强>
此方法还包含两个精灵
<强>假设强>
此方法假定两个精灵都包含属性x
,y
,width
和height
。
<强>返回强>
此方法返回一个布尔值,表示它们是否发生碰撞。
bool detectCollision(Sprite sprite1, Sprite sprite2) {
return ((sprite1.x <= sprite2.x && (sprite2.x + sprite2.width) - sprite1-x <= sprite1.width + sprite2.width) ||
(sprite1.x >= sprite2.x && (sprite1.x + sprite1.width) - sprite2.x <= sprite1.width + sprite2.width)) && // Check for x
((sprite1.y <= sprite2.y && (sprite2.y + sprite2.height) - sprite1.y <= sprite1.height + sprite2.height) ||
(sprite1.y >= sprite2.y (sprite1.y + sprite1.height) - sprite2.y <= sprite1.height + sprite2.height)); // Check for y
}
此方法检查每个矩形的最外侧,并检测距离是否小于组合的两个的宽度或高度。如果两个轴都检查为真,则保证它们正在触摸。
告诉我它是否有效!