Почему вектор и функция OnMove имеют разные оси? - PullRequest
0 голосов
/ 01 августа 2020

Я новичок в Unity. Я слежу за учебником на сайте Unity. Ниже приведен фрагмент кода.

void OnMove(InputValue movementValue)
{
    Vector2 movementVector = movementValue.Get<Vector2>();

    movementX = movementVector.x;
    movementY = movementVector.y;
}


void FixedUpdate()
{
    Vector3 movement = new Vector3(movementX, 0.0f, movementY);
    rb.AddForce(movement); 
}

Здесь я пытаюсь переместить сферу. Я получил ввод с клавиатуры в движениях X и Y. Моя сфера не будет летать выше, поэтому ось Y должна быть равна нулю. Может ли кто-нибудь сказать мне, почему ось Y onMove является осью Z вектора 3?

1 Ответ

0 голосов
/ 01 августа 2020

Может ли кто-нибудь сказать мне, почему ось Y onMove является осью Z вектора 3?

это потому, что Input в вашем случае 2D - перемещение влево или вправо считается Ввод оси X (например, кнопки A / D на клавиатуре в играх) и вперед или назад - это ввод оси Y (также как W / S на клавиатуре) - например, если вы нажали клавишу W, ваш ввод будет похож на vector2 (0 , 1) и означает, что значение оси Y равно 1 ... et c. Итак, это был ввод, теперь мы хотим, чтобы сфера двигалась вперед, когда мы нажимаем клавишу W, так как вы работаете в трехмерном пространстве, направление вперед / назад - это ось Z. поэтому нам нужно поместить значение y входа в скорость объекта, чтобы двигаться вперед (ось z), поэтому в приведенном выше примере вход y помещается по оси z, чтобы сфера двигалась вперед / назад.

if ваш код был таким:

Vector3 movement = new Vector3(movementX, movementY ,0.0f );
rb.AddForce(movement); 

когда вы нажимаете W, ваша сфера будет летать, а когда вы нажимаете S, ваша сфера будет нырять. И если это так:

Vector3 movement = new Vector3(movementX, 0.0f, movementY );
rb.AddForce(movement); 

ваш объект будет двигаться вперед / назад в соответствии с вашим входным значением y и влево / вправо в соответствии с вашим входным значением x.

вместо проверки, если Клавиша W, S или A или D нажимается и определяет движение вправо при нажатии D ... вы просто связываете ввод motionX с перемещением объекта по оси X, а ввод перемещенияY с перемещением объекта по оси Z.

это просто то, чем ты хочешь заниматься. также вы можете настроить свои входы и движения ваших объектов по своему усмотрению.

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