Как я могу изменить скорость объектов, которые постоянно появляются в моей игре? - PullRequest
0 голосов
/ 19 апреля 2020

Я редактирую игру Space Shooter для класса и пытаюсь создать «Жесткий режим», который ускоряет астероиды, когда игрок нажимает клавишу «e». В настоящее время с моим кодом нажатие клавиши ускорит каждый астероид, который в данный момент находится на экране, но новые астероиды появляются с постоянной скоростью. Я понятия не имею, как исправить и хотел бы некоторые предложения, что делать. Вот мой код:

 public float speed;

 private Rigidbody rb;

 Vector3 initialForwardVector;

 void Start()
 {
    rb = GetComponent<Rigidbody>();
    initialForwardVector = transform.forward;
    rb.velocity = initialForwardVector * speed;
 }

 void Update()
 {
    if (Input.GetKey (KeyCode.E))
    {
        rb.velocity = initialForwardVector * (2*speed);
    }
 }

1 Ответ

1 голос
/ 19 апреля 2020

Самое быстрое простейшее решение:

public float speed;
public static float speedModifier = 1f;

private Rigidbody rb;

Vector3 initialForwardVector;

void Start()
{
    rb = GetComponent<Rigidbody>();
    initialForwardVector = transform.forward;
    rb.velocity = initialForwardVector * speed * speedModifier;
}

void Update()
{
    if (Input.GetKey(KeyCode.E))
    {
        speedModifier = 2f;
        rb.velocity = initialForwardVector * (speedModifier * speed);
    }
}

Модификатор скорости будет применяться ко всем новым снарядам, поскольку значение распределяется (stati c) между всеми экземплярами класса. Для более надежной реализации я предлагаю добавить функцию Initialize, которая установит локальный модификатор скорости для новых астероидов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...