Как мне один раз сгенерировать значение Random.Range, а затем использовать его в void Update для перемещения? Единство, C# - PullRequest
0 голосов
/ 14 июля 2020

Итак, я хочу сгенерировать случайную скорость и значение вращения для игры, которую я (пытаюсь) создать, но если я сгенерирую значения в функции обновления, она будет продолжать генерировать новые значения каждый кадр, но если Я генерирую значения в функции Start, функция Update не распознает это! Это сценарий, который у меня есть сейчас (который не работает):

    void Start()
    {
        float randomRotation = Random.Range(0, 360f);
        float randomSpeed = Random.Range(1f, 5f);
    }

    void Update()
    {
        transform.rotation = Quaternion.Euler(0, 0, randomRotation);
        Vector3 pos = transform.position;
        Vector3 velocity = new Vector3(0, randomSpeed, 0);
        pos += transform.rotation * velocity;
        transform.position = pos;
    }

Проблема в том, что Update void не знает, что означает randomRotation, поэтому он ничего не может сделать, однако, если я попробую public float randomRotation похоже, что весь сценарий запутался, и я получаю ошибку компилятора: error CS1022: Type or namespace definition, or end-of-file expected Кто-нибудь знает, как это исправить?

Спасибо!

1 Ответ

1 голос
/ 14 июля 2020

Вы должны определить переменную randomSeedrandomRotation) вне функции запуска, например:

float randomRotation = 0.0f;
float randomSpeed = 0.0f;

void Start()
{
    randomRotation = Random.Range(0, 360f);
    randomSpeed = Random.Range(1f, 5f);
}

void Update()
{
    transform.rotation = Quaternion.Euler(0, 0, randomRotation);
    Vector3 pos = transform.position;
    Vector3 velocity = new Vector3(0, randomSpeed, 0);
    pos += transform.rotation * velocity;
    transform.position = pos;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...