如何保持原始速度,还能够换新速度?

时间:2018-06-04 04:57:07

标签: c# unity3d

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更新为新速度。

我现在这样做的方式是在错误的情况下锁定速度。

1 个答案:

答案 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);
        }
    }
}