(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 - это базовый класс объекта.