You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动