【发布时间】:2017-09-22 22:29:39
【问题描述】:
在我的游戏中,有很多敌人,上面有这个脚本,我通过从位置数组中随机选择一个元素来设置他们的导航网格目标。但是,有时所有敌人都在同一个位置,所以我试图跳过以前生成的数组索引并找到一个新索引。对此有什么建议吗?我不想使用goto 语句。
这是我到目前为止所做的代码:
void move_on_fired_positions()
{
navmesh.Resume ();
again:
new_position = Random.Range (0, firedpoints.Length);
if (prev_num != new_position) {
navmesh.SetDestination (firedpoints [new_position].position);
prev_num = new_position;
} else
{
goto again;
}
}
【问题讨论】:
-
嗯,有一个解决方案的想法 - 但要澄清一下,
firedpoints是什么?它是如何填充的,一旦敌人移动到其中一个位置,是否应该认为其他敌人在游戏的剩余时间里无法使用它,或者是否有某种条件可以释放它以再次使用? -
是的,一旦一个敌人移动到其中一个位置,那么其他敌人应该无法使用它,并且没有条件可以将其释放以再次使用(也需要该条件)并且射击点是公开的变换数组,在检查器中分配。 @Serlite
-
我在想,必须有一个 position_distributor 类,它有 next_position 方法(返回新位置的变换),并且 navmesh,setdestination 调用这个分发器类方法来获取新位置。但由于初学者,我无法做到这一点:-(