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

Unity下落物体水平往复移动时抖动问题的解决求助

解决下落物体水平往复移动的抖动问题

问题根源

你的代码同时混用了两种位置更新方式:

  • 在Update中直接修改transform.position实现下落
  • 在FixedUpdate中通过Rigidbody2D.velocity控制水平移动

由于Update的执行频率随帧率变化,而FixedUpdate以固定时间间隔执行,两者的位置更新不同步,导致物体位置出现冲突,最终产生抖动。此外,直接覆盖velocity的y分量为0,也破坏了移动的一致性。

解决方案:统一用物理组件控制所有移动

将下落和水平移动的逻辑全部交给Rigidbody2D处理,避免transform和物理引擎的操作冲突,具体修改如下:

修改后的代码

public float verticalSpeed = 7f;

private Rigidbody2D object_RB;

private int moveDirection; // 用-1表示左,1表示右
private int horizontalSpeed;

void Start()
{
    object_RB = GetComponent<Rigidbody2D>();

    // 随机初始移动方向
    moveDirection = Random.Range(0, 2) == 0 ? 1 : -1;
    horizontalSpeed = Random.Range(4, 7);
    
    // 初始化物理速度:水平方向+下落方向
    object_RB.velocity = new Vector2(moveDirection * horizontalSpeed, -verticalSpeed);
}

void Update()
{
    // 销毁逻辑保留在Update即可
    if (transform.position.y <= -10f)
    {
        Destroy(gameObject);
    }
}

void FixedUpdate()
{
    // 边界检测与物理更新同步,避免帧差导致的判断延迟
    if (transform.position.x < -1.7f)
    {
        moveDirection = 1;
    }
    else if (transform.position.x > 1.7f)
    {
        moveDirection = -1;
    }

    // 仅修改水平速度分量,保留下落速度的一致性
    Vector2 currentVelocity = object_RB.velocity;
    currentVelocity.x = moveDirection * horizontalSpeed;
    currentVelocity.y = -verticalSpeed;
    object_RB.velocity = currentVelocity;
}

额外优化建议

  1. 调整Rigidbody2D设置

    • 将Gravity Scale设为0,避免内置重力干扰手动控制的下落速度
    • 重新设置Interpolate为Interpolate,此时物理引擎会自动插值平滑渲染帧之间的位置,解决轻微卡顿
  2. 改用碰撞器检测边界
    在左右边界位置放置空物体,添加BoxCollider2D并勾选Is Trigger,然后通过OnTriggerEnter2D事件触发方向切换,比直接判断transform.position更准确,避免边界附近的抖动:

    private void OnTriggerEnter2D(Collider2D other)
    {
        // 假设边界物体标签为"Boundary"
        if (other.CompareTag("Boundary"))
        {
            moveDirection *= -1;
        }
    }
    
  3. 匹配FixedTimestep与帧率
    进入Edit -> Project Settings -> Time,将Fixed Timestep设为0.0167(对应60帧的Time.deltaTime),让物理更新频率与渲染频率更匹配,减少不同步的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:45:29