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

Unity 2D仿Doodle Jump游戏多平台触发跳跃逻辑异常问题求助

Unity 2D仿Doodle Jump游戏多平台触发跳跃逻辑异常问题求助

各位大佬好!我正在做一款类似Doodle Jump的2D游戏,游戏里的平台都挂载了Edge Collider 2D和Platform Effector 2D组件。我写了一个平台的脚本,原本是想实现玩家碰到平台时向上跳跃的效果,但遇到了一个头疼的问题:当多个平台在Y轴方向靠得特别近的时候,玩家下落穿过这些平台区域时,会同时触发所有途经平台的跳跃逻辑,导致跳跃高度异常,而不是只触发最高的那个平台的跳跃。

我目前用的脚本代码如下:

using UnityEngine;

public class DefaultPlatform : MonoBehaviour
{
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // 获取碰撞对象的Rigidbody2D组件
        Rigidbody2D rb = collision.collider.GetComponent<Rigidbody2D>();
        // 只更新垂直速度,保留水平速度
        rb.velocity = new Vector2(rb.velocity.x, 8f);
    }
}

我已经尝试过两种方法来解决:

  • 用协程在跳跃后延迟几秒再允许再次触发,但这样会导致玩家在正常需要连续跳的场景里无法操作,体验很差;
  • 加了canJump和isPlayerOnPlatform这类布尔变量来控制触发状态,但不知道哪里出问题,完全没起作用。

实在没头绪了,有没有大佬能指点一下该怎么修改逻辑,让玩家只触发当前碰到的最高平台的跳跃呢?

备注:内容来源于stack exchange,提问作者Lighteight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:24:38