为什么脚本不旋转我的球体对象?

时间:2016-07-27 06:20:59

标签: c# unity3d

嗯,我是团结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旋转..并且没有围绕立方体旋转..

2 个答案:

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

这是eulerAngleRotate

的官方Unity文档

答案 1 :(得分:0)

如另一个答案中所述,当您设置transform.eulerAngles时,您正在设置绝对旋转。您可以使用transform.Rotate(),但也可以使用Time.time确保获得线性轮换:transform.eulerAngles = new Vector3(0, 180*Time.time, 0);