为什么脚本没有旋转我的球体对象

本文关键字:对象 我的 旋转 脚本 为什么 | 更新日期: 2023-09-27 17:58:42

嗯,我是unity 3d和C sharp的新手。我正在尝试一个脚本来旋转我的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旋转时卡住了。。而不是围绕立方体旋转。。

为什么脚本没有旋转我的球体对象

问题是您正在尝试旋转,但eulerAngles仅设置为绝对角度(如果要将角度添加到当前帧角度,则将使用Rotate)。

所以,如果你使用transform.eulerAngles,你将是所有帧设置角度变化为180 * Time.deltaTime返回的值,这将取决于你运行的FPS数量,这就是为什么你得到恒定的数字。

如果使用transform.Rotate,则会将新的角度更改添加到当前角度帧中。假设要递增10度,则第1帧=(0,0,0)、第2帧=(0,10,0)和第3帧=(0,0,0)。

eulerAngles中,您将获得所有时间(0,10,0),因为它设置了绝对角度,Rotate将添加到您想要的当前角度。

更改此

transform.eulerAngles = new Vector3 (0, 180*Time.deltaTime, 0);

到此

transform.Rotate(new Vector3 (0, 180*Time.deltaTime, 0));

这是eulerAngle和Rotate 的官方Unity文档

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