You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2D屏幕速度表始终显示0的解决求助(附代码)

Unity 2D速度表始终显示0的解决方法
  • 先检查基础配置

    • 确认脚本挂载在带Rigidbody2D组件的游戏物体上,且Inspector面板里的text变量已经拖入了对应的Text组件。
    • 如果物体没有Rigidbody2D,直接添加一个,注意把运动类型设为Dynamic(静态物体不会产生物理速度)。
  • 修复代码逻辑
    你的代码存在几个问题:一是每帧调用GetComponent<Rigidbody2D>()浪费性能,二是没把Unity默认的米/秒单位转换成公里/小时,三是如果物体不是靠Rigidbody物理驱动移动,velocity会一直是0。

    下面分两种场景给你修改后的代码:

    场景1:物体靠Rigidbody2D物理运动(比如加力、重力)

    using UnityEngine;
    using UnityEngine.UI;
    
    public class Speedometer : MonoBehaviour
    {
        public Text speedText;
        private Rigidbody2D rb2D;
    
        void Start()
        {
            // 提前获取组件,避免重复调用
            rb2D = GetComponent<Rigidbody2D>();
            // 初始化显示
            speedText.text = "0 km/h";
        }
    
        void FixedUpdate()
        {
            // 把m/s转成km/h(乘以3.6),保留1位小数
            float currentSpeed = rb2D.velocity.magnitude * 3.6f;
            speedText.text = $"{currentSpeed:F1} km/h";
        }
    }
    

    场景2:物体靠Transform直接移动(比如代码里改position)

    这种情况Rigidbody的velocity会是0,得用位移差计算速度:

    using UnityEngine;
    using UnityEngine.UI;
    
    public class Speedometer : MonoBehaviour
    {
        public Text speedText;
        private Vector3 lastPosition;
    
        void Start()
        {
            lastPosition = transform.position;
            speedText.text = "0 km/h";
        }
    
        void FixedUpdate()
        {
            // 计算两帧位移差,转成速度后再转km/h
            float distance = Vector3.Distance(transform.position, lastPosition);
            float currentSpeed = (distance / Time.fixedDeltaTime) * 3.6f;
            speedText.text = $"{currentSpeed:F1} km/h";
            // 更新上一帧位置
            lastPosition = transform.position;
        }
    }
    
  • 额外注意
    如果还是显示0,检查物体是否真的在移动——比如运行游戏时看Inspector里物体的position或Rigidbody的velocity数值有没有变化,排除物体没动的情况。

内容的提问来源于stack exchange,提问作者Feynman Jr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:45:44