(Unity) Как умножение векторов и обновление позиций работают в единстве?

Этот фрагмент кода включает в себя умножение вектора moveVector на значение с плавающей запятой moveSpeed ​​и другое значение с плавающей запятой, Time.deltaTime. умножаются ли эти числа с плавающей запятой на каждое значение Vector3 (x, y, z)? Более того, если я напишу transform.position вместо GameObject.transform.position, прав ли я, что transform.position преобразует положение глобального объекта, тем самым обновляя положение любого GameObject/prefab, к которому прикреплен этот сценарий движения?

void Move(Vector3 desiredDirection)
  {
   moveVector.Set(desiredDirection.x, 0f, desiredDirection.z);
   moveVector = moveVector * moveSpeed * Time.deltaTime;
   transform.position += moveVector;
  }

1 ответ

Решение

Да. moveVector * moveSpeed * Time.deltaTime; берет каждое число из вектора и умножает его на скорость перемещения, а затем снова на Time.deltaTime.

Итак, если у нас есть вектор 3, 2, 1, каждая ось умножается на значение: 3 * скорость * deltaTme 2 * скорость * deltaTme 1 * скорость * deltaTime

transform.position это то же самое, что писать gameObject.transform.position. Потому что скрипт прикреплен к gameObject.

Обратите внимание на разницу между GameObject и gameObject.

gameObject - это текущий объект, к которому прикреплен скрипт. GameObject - это базовый класс объекта.

Другие вопросы по тегам