所以到目前为止,我有一个小游戏,你建造船只并试图摧毁敌人的站点。一切工作正常,除非有不止一艘船在火车站开火。似乎发生的事情(或者至少我认为)是用于设置子弹位置的代码与船只一样多次发生。所以我试着简单地将子弹的速度除以有多少艘船,但最终子弹停止移动。这是代码,因为它没有尝试任何修复。
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语句是问题还是我必须区分什么项目符号属于什么船?
编辑:应该指定这是在计时器中。
答案 0 :(得分:0)
您可以确保只检查一次:
if (PlayerMapData.weaponFireCreated [j] && !PlayerMapData.alreadyUpdated[j])
{
...
PlayerMapData.alreadyUpdated[j]=true;
}
您没有为每个船舶实例扫描整个地图,是吗?
答案 1 :(得分:0)
所以问题只是因为武器火炮阵列是一维的,因此被多艘舰船引用。使用2D阵列解决了问题,因为船舶现在拥有&#34;所有权&#34;他们射击的子弹,而不是试图移动任何船只发射的每颗子弹。