(爪哇)随着越来越多的船只开火,船舶射弹越来越快

时间:2015-02-17 23:57:07

标签: java arrays projectile

所以到目前为止,我有一个小游戏,你建造船只并试图摧毁敌人的站点。一切工作正常,除非有不止一艘船在火车站开火。似乎发生的事情(或者至少我认为)是用于设置子弹位置的代码与船只一样多次发生。所以我试着简单地将子弹的速度除以有多少艘船,但最终子弹停止移动。这是代码,因为它没有尝试任何修复。

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语句是问题还是我必须区分什么项目符号属于什么船?

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

2 个答案:

答案 0 :(得分:0)

您可以确保只检查一次:

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

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

答案 1 :(得分:0)

所以问题只是因为武器火炮阵列是一维的,因此被多艘舰船引用。使用2D阵列解决了问题,因为船舶现在拥有&#34;所有权&#34;他们射击的子弹,而不是试图移动任何船只发射的每颗子弹。