public class EnemyBehaviour : MonoBehaviour
{
public float speed; // or the speed of rotation.
public bool randomSpeed = false;
public float speedRange = 4;
private float originalSpeed;
private void Start() { originalSpeed = speed; }
private void Update()
{
if (!randomSpeed)
{
speedRange = 0;
speed = originalSpeed;
}
else speed = Random.Range(1, speedRange);
}
}
问题出在Update
这一部分:
if (!randomSpeed)
{
speedRange = 0;
speed = originalSpeed;
}
例如,当运行游戏时速度为3,当我将其设置为false时,速度值将始终为3,我现在无法更改速度值。但我希望能够将速度值更改为任何值。我希望如果我设置为false,它将返回到originalSpeed,但也能够更改为新速度,然后将originalSpeed更新为新速度。
我现在这样做的方式是在错误的情况下锁定速度。
答案 0 :(得分:0)
当你每帧都用originalSpeed分配速度值时,它肯定会锁定速度。
要解决它,你不应该把东西放在Update()中。另外,尝试对那些受保护的公共变量使用“get set”语法。
假设您在单击randomSpeed复选框时只想为“速度”指定一个值。
private float randomSpeed
public float RandomSpeed
{
get {return randomSpeed;}
set {
randomSpeed = RandomSpeed;
if (!randomSpeed){
speed = originalSpeed;
} else {
speed = Random.Range(1, speedRange);
}
}
}