我有一个 Sprite 和多个用作项目符号的位图。现在的问题是我希望子弹飞得非常快,但这又给我的碰撞检测功能带来了问题,它的工作方式是每一帧我都在敌人和子弹处创建一个矩形并检查重叠。
现在,如果一颗子弹飞得非常快,它就像从一个点“跳”到另一个点,这意味着如果一个敌人很小并且子弹“跳”在敌人身上,它就不会被注意到。
我想知道的是,是否有一种方法可以检测两个移动物体之间是否会发生碰撞,或者只是看看敌人是否在子弹的轨迹中。
我通过循环遍历一系列敌人来进行碰撞检测,在 for 循环中我循环所有子弹,然后为两者创建一个矩形,并检查每个敌人和子弹与 Rect.intersects 的碰撞。
子弹航向由一个固定点和触摸输入测量,然后通过此函数计算:
public void calcPoint(float x, float y) {
double alfa = Math.atan(x / y);//x and y are inputs
bulletPointX = (float) Math.sin(alfa) * speed;
bulletPointY = (float) Math.cos(alfa) * speed;
}
我不知道如何解决它,我想要一些建议如何做到这一点,并可能有一个例子......