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

Unity中物体X轴移动无延迟且间隔时长递减问题求助

问题修复:方块带逐渐缩短延迟的X轴移动

原代码核心问题

  1. 语法错误堆积:变量声明缺分号、GetComponent拼写错误、if语句括号不完整、Vector3/GameObject.Find大小写错误,且协程定义嵌套在了Update方法内部。
  2. 协程重复启动:Update每帧都触发协程启动,瞬间生成大量协程直接覆盖延迟效果。
  3. 无延迟缩短逻辑:固定延迟值,未实现间隔逐渐缩短的需求。
  4. 浮点判断风险:直接用!= -15判断位置,浮点数精度问题可能导致逻辑失效。

修正后完整代码

public class SetMove : MonoBehaviour
{
    private Transform _trans;
    // 初始延迟时间(秒)
    private float _currentDelay = 2f;
    // 每次延迟缩短幅度
    private float _delayReduction = 0.1f;
    // 最小延迟阈值,防止无限缩短
    private float _minDelay = 0.2f;
    // 协程运行标记,避免重复启动
    private bool _isMoving = false;
    // 目标停止X坐标
    private float _targetX = -15f;

    private void Start()
    {
        _trans = GetComponent<Transform>();
    }

    private void Update()
    {
        // 未到达目标且未在移动时,启动移动协程
        if (!_isMoving && _trans.position.x > _targetX)
        {
            StartCoroutine(MoveWithDecreasingDelay());
        }
        // 到达目标后触发生成逻辑并销毁自身
        else if (_trans.position.x <= _targetX)
        {
            GameObject.Find("controller").GetComponent<Set_Make>().StartMaking();
            Destroy(gameObject);
        }
    }

    private IEnumerator MoveWithDecreasingDelay()
    {
        _isMoving = true;
        
        // 等待当前延迟时间
        yield return new WaitForSecondsRealTime(_currentDelay);
        // 沿X轴移动-1单位
        _trans.position = new Vector3(_trans.position.x - 1f, _trans.position.y);

        // 缩短延迟,不低于最小值
        if (_currentDelay > _minDelay)
        {
            _currentDelay -= _delayReduction;
        }
        
        _isMoving = false;
    }
}

关键修改说明

  • 语法规范:修正所有拼写、嵌套、大小写错误,统一私有变量命名风格。
  • 协程控制:添加_isMoving标记,确保同一时间仅一个协程运行,彻底解决重复启动问题。
  • 延迟动态调整:通过_currentDelay变量记录当前间隔,每次移动后自动缩短,并用_minDelay限制下限。
  • 位置判断优化:用> _targetX替代!= -15,规避浮点数精度误差导致的逻辑失效。
  • 逻辑解耦:建议给set_make类定义公开方法(如示例中的StartMaking())触发生成逻辑,避免直接调用MonoBehaviour的Start方法。

内容的提问来源于stack exchange,提问作者Logan Kocher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:38:24