嗯,我是团结3D和C锐的新手。我正在尝试一个脚本来旋转我的spehere对象。但它不起作用。
我关注的是YouTube视频。这段代码对他有用。但就我而言,它无效。
我添加了变换对象。
using UnityEngine;
using System.Collections;
public class cubescript : MonoBehaviour {
public Transform sphereTransform;
// Use this for initialization
void Start () {
sphereTransform.parent = transform;
}
// Update is called once per frame
void Update () {
transform.eulerAngles = new Vector3 (0, 180*Time.deltaTime, 0);
}
}
它有点工作但是停留在2.981877-3 Y旋转..并且没有围绕立方体旋转..
答案 0 :(得分:1)
问题在于您正在尝试旋转,但eulerAngles
仅设置为ABSOLUTE角度(如果您想要将角度添加到当前帧角度,则将使用Rotate
)。
因此,如果您使用transform.eulerAngles
,您将成为将角度更改设置为180 * Time.deltaTime
返回的所有帧,这将取决于您运行的FPS数量,这就是您获得常数的原因。
如果您使用transform.Rotate
,它会将新的角度更改添加到当前角度框架。假设你想增加10度,所以第1帧=(0,0,0),第2帧=(0,10,0),第3帧=(0,20,0)。
在eulerAngles
中,你会得到所有的时间(0,10,0),因为它设置了绝对角度,Rotate
会增加你想要的当前角度。
更改此
transform.eulerAngles = new Vector3 (0, 180*Time.deltaTime, 0);
到此
transform.Rotate(new Vector3 (0, 180*Time.deltaTime, 0));
的官方Unity文档
答案 1 :(得分:0)
如另一个答案中所述,当您设置transform.eulerAngles
时,您正在设置绝对旋转。您可以使用transform.Rotate()
,但也可以使用Time.time
确保获得线性轮换:transform.eulerAngles = new Vector3(0, 180*Time.time, 0);