我正在为一个游戏的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。
答案 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);