gameObject在相机旋转时旋转

时间:2018-01-05 03:50:46

标签: c# unity3d

我正在为一个游戏的UI菜单工作,我拖入一个GameObject来表示如果选择它将会放下什么。当我附加一个脚本进行旋转并运行游戏时,它会随着相机的倾斜而向下倾斜,即使没有连接相机和物体的脚本。

Canvas处于ScreenSpace - Camera模式。

旋转脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BuildList : MonoBehaviour {

    //Floats
    public float speed = 10f;

    void Update ()      
    {       
         transform.eulerAngles = new Vector3 (-90f, transform.eulerAngles.y, transform.eulerAngles.z + (speed * Time.deltaTime));   
    }       
}

检查器中的x旋转是旋转的。向下旋转摄像机时,检查器中x旋转的值为-155,而此对象的x旋转应固定为-90。

2 个答案:

答案 0 :(得分:0)

这可能或不能解决您的问题,但我有一个提示:

不要使用transform.eulerAngles进行迭代更新。它可能会导致Gimbal Lock。如果可能,请使用Rotate

我建议用以下代码替换代码:

void Update ()      
{       
     // Note: the axis to rotate may different than what you expect. experiment with it
     transform.Rotate(Vector3.forward * (speed * Time.deltaTime), Space.World);   
}  

在游戏开始前将对象旋转设置为(-90,0,0)。

答案 1 :(得分:0)

感谢willnode向我推进正确的方向,我在unity文档中找到了代码并对其进行了修改,因此它只旋转了对象的z轴。

https://docs.unity3d.com/ScriptReference/Transform.Rotate.html

transform.Rotate(0, 0, Time.deltaTime * speed);