Как я могу сохранить исходную скорость, но также, чтобы иметь возможность перейти на новую скорость? - PullRequest
0 голосов
/ 04 июня 2018
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все время я не могу изменить это сейчас.Но я хочу иметь возможность изменить значение скорости на любое значение.Я хочу, чтобы оно вернулось к originalSpeed, если я установил значение false, но также смогло изменить новую скорость, а затем обновить оригинал Speed ​​до новой.

То, как я это сделал сейчас, я заблокировалскорость, когда она ложна.

1 Ответ

0 голосов
/ 04 июня 2018

Конечно, он будет блокировать скорость при назначении значения скорости с помощью originalSpeed ​​для каждого кадра.

Чтобы решить эту проблему, не следует помещать объекты в Update ().Также попробуйте использовать синтаксис «get set» для этих защищенных открытых переменных.

Допустим, вы хотите присвоить значение «speed» только один раз, когда вы установите флажок randomSpeed.

private float randomSpeed
public float RandomSpeed
{
    get {return randomSpeed;}
    set {
        randomSpeed = RandomSpeed;
        if (!randomSpeed){
            speed = originalSpeed;
        } else {
            speed = Random.Range(1, speedRange);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...