如何在统一3D模式下将飞船从y轴向左旋转

时间:2019-01-19 12:33:01

标签: c# unity3d rotation axis

我正在开始一个新的unity3d项目,我想知道如何将向前移动的太空船从y轴旋转到左右。

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

我希望当我按向左箭头键时,太空飞船将从y轴向左旋转,直到释放方向键。

3 个答案:

答案 0 :(得分:1)

您需要将速度和旋转速度声明为浮点数,以便以后可以轻松更改它们,但是您就可以了。我做了左右。

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);

答案 1 :(得分:0)

您可以使用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);
}

答案 2 :(得分:0)

我真的不知道我是否理解这个问题,但是我认为这可能对您有所帮助。

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

第一个0表示x轴,数字1表示y轴,其他0表示z轴