Unity中如何绕Y轴旋转物体?制作旋转地球游戏遇代码问题求帮助
解决Unity中地球旋转的问题
嘿,我发现你代码里的问题啦!你直接用Transform.Rotate()是不对的——Transform是Unity的一个类,你需要调用当前脚本挂载对象的实例化transform组件来执行旋转操作,而不是直接调用类本身的方法。
先给你修正后的代码,亲测可用:
using UnityEngine; public class Earth_Rotation : MonoBehaviour { // 把旋转速度设为公共变量,方便在编辑器里直接调整 public float rotationSpeed = 10f; // Update is called once per frame void Update() { // 用当前对象的transform实例调用Rotate方法 // 加上Time.deltaTime让旋转速度和帧率无关,转动更平滑 transform.Rotate(0, rotationSpeed * Time.deltaTime, 0); } }
关键修正点说明
- 把
Transform.Rotate改成transform.Rotate(小写t开头,代表当前脚本挂载对象的transform实例),这是你代码最核心的问题 - 加入
Time.deltaTime:不管游戏帧率高低,地球的旋转速度都会保持稳定,不会出现帧率高转得飞快、帧率低转得卡顿的情况 - 新增公共变量
rotationSpeed:不用改代码重新编译,直接在Unity编辑器的Inspector面板里拖动数值就能调整旋转快慢,调试起来更方便
额外小建议
- 如果想要更贴合真实地球自转方向,可以把Y轴的旋转值改成负数,比如
-rotationSpeed * Time.deltaTime - 要是之后想做地球绕太阳公转的效果,可以试试
Transform.RotateAround()方法,传入公转中心点、旋转轴和速度就行,不过当前自转需求用上面的代码完全足够啦
内容的提问来源于stack exchange,提问作者RtHAitP30D




