为什么脚本没有旋转我的球体对象
本文关键字:对象 我的 旋转 脚本 为什么 | 更新日期: 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);