Как вращать космический корабль от оси у влево в единстве 3D - PullRequest
0 голосов
/ 19 января 2019

Я начинаю новый проект unity3d, и я хочу знать, как вращать движущийся вперед космический корабль от оси y влево и вправо.

void Update(){
   transform.position += transform.forward * Time.deltaTime * 10f;
   if(input.Getkey(KeyCode.LeftArrow))
   {
     //code for rotate ;
   }
}

Я хочу, чтобы при нажатии клавиши со стрелкой влево космический корабль вращался от оси y влево до тех пор, пока клавиша со стрелкой не будет отпущена.

Ответы [ 3 ]

0 голосов
/ 19 января 2019

Я действительно не знаю, понимаю ли я вопрос, но я думаю, что это может вам помочь.

void Update () {
    if (Input.GetKeyDown (KeyCode.Space)){
         transform.Rotate (new Vector3(Time.deltaTime * 0, 1, 0));
}

, где первый 0 для оси X, номер 1 для оси Y, а другой0 для оси Z

0 голосов
/ 19 января 2019

Вы хотите объявить скорость и скорость вращения как плавающие, чтобы вы могли легко изменить их позже, но здесь вы идете. Я сделал и левый и правый.

float speed = 10.0f;
float rotateSpeed = 2.0f;

void Update(){
   transform.position += transform.forward * Time.deltaTime * speed;

   if(Input.GetKeyDown(KeyCode.LeftArrow))
   {
      //code for rotate
      transform.Rotate(vector3.left * Time.deltaTime * rotateSpeed);
   }
   else if(Input.GetKeyDown(KeyCode.RightArrow))
   {
      transform.Rotate(vector3.right * Time.deltaTime * rotateSpeed);
   }
}

Если вы хотите повернуть корабль относительно мира, используйте:

transform.Rotate(vector3.left * Time.deltaTime * rotateSpeed, Space.World);
0 голосов
/ 19 января 2019

Вы можете использовать Transform.Rotate (Vector3).

void Update()
{
    if (Input.GetKey(KeyCode.LeftArrow))
        transform.Rotate(transform.forward * 3);
    if (Input.GetKey(KeyCode.RightArrow))
        transform.Rotate(transform.forward * -3);
}
...