Как изменить положение Y движущегося вперед космического корабля в Unity 3D

Прежде всего, ваше регулярное выражение содержит unquantified \d и соответствует только одиночным цифрам. Вам нужно добавить + после \d, чтобы соответствовать 1 или более цифрам.

Чтобы избежать дублирования значений, вы можете использовать

^(?!.*\b(\d+)\b.*\b\1\b)\d+(?:,\d+)*$
 ^^^^^^^^^^^^^^^^^^^^^^^

См. Регулярное выражение demo

(?!.*\b(\d+)\b.*\b\1\b) - это отрицательный результат, который не даст совпадения, если после любых символов 0+, кроме символов разрыва строки, есть группа цифр, которые появляются позже в строке ( после других символов 0+, кроме символов разрыва строки).

Подробности

  • ^ - начало строки
  • (?!.*\b(\d+)\b.*\b\1\b) - a отрицательный результат, который не соответствует совпадению, если идентичные значения появляются в тексте
  • \d+ - 1 + цифры
  • (?:,\d+)* - ноль или более вхождений , - запятая \d+ - 1 + цифры
  • $ - конец строки.

0
задан oldherl 29 January 2019 в 08:22
поделиться

2 ответа

Предполагая, что ваш космический корабль - твердое тело, вы должны взглянуть на Rigidbody.AddForce https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

Работая с помощью сил вы можете очень легко получить плавное движение во всех направлениях и настроить его в параметрах Rigidbody (например, в массе) без повторения в скрипте. Это часть физической модели Unity.

Если вы хотите двигаться только в направлении y, введите вектор, подобный (0,1,0), но вы также можете ввести вектор Transform.forward Gameobject вашего космического корабля. Таким образом, он всегда будет двигаться в том направлении, в котором он стоит.

0
ответ дан Commodore Yournero 29 January 2019 в 08:22
поделиться

Основанный на вашем собственном коде, самый простой способ решить его может быть что-то вроде этого

//this sets the X position
transform.position += transform.forward * Time.deltaTime * 10f;

//if the button is pressed then modify Y
if (Input.GetKey (KeyCode.UpArrow))
    transform.position += new Vector3 (0, 5f  * Time.deltaTime * y_speed,0);

y_speed может быть public float y_speed = 1.0f в вашем скрипте, чтобы вы могли изменить его из инспектор, чтобы получить эффект, которого вы хотите достичь.

Надеюсь, это поможет!

0
ответ дан Chopi 29 January 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: