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
相关产品推荐
相关产品推荐

