(Java) 随着更多船只开火,船只弹丸加速

(Java) Ship projectiles speeding up as more ships fire

到目前为止,我有一个小游戏,您可以在其中建造船只并尝试摧毁敌方基地。一切正常,除非不止一艘船在车站开火。似乎发生的事情(或者至少我相信)是设置子弹位置的代码出现的次数与船只的数量一样多。所以我试着简单地将子弹的速度除以有多少艘船,但最终子弹停止了移动。这是代码,因为它没有尝试任何修复。

for (int j = 0; j < 9999; j++) {
    if (PlayerMapData.weaponFireCreated [j]) {
        PlayerMapData.weaponFire [j].setLocation (
            (int) (PlayerMapData.weaponFire [j].x + playerMapData.weaponTravelSpeed * PlayerMapData.weaponFireDirectionX [j]),
            (int) (PlayerMapData.weaponFire [j].y + PlayerMapData.weaponTravelSpeed * PlayerMapData.weaponFireDirectionY [j])
        );

命中检测发生在下方。是 setLocation 语句的问题还是我必须区分哪些子弹属于哪艘船?

编辑:应该指定这是在计时器中。

您可以确保只检查一次:

 if (PlayerMapData.weaponFireCreated [j] && !PlayerMapData.alreadyUpdated[j]) 
 { 
           ...
           PlayerMapData.alreadyUpdated[j]=true;
 }

您不会为每个船舶实例扫描整个地图,是吗?

所以问题仅仅是因为 weaponFire 数组是一维的,因此被多艘船引用。使用 2D 阵列解决了这个问题,因为船只现在发射了 "ownership" 颗子弹,而不是试图移动任何船只发射的每颗子弹。