小白求助个问题 怎么解决二段跳问题。

我现在的做法是。设置一个isJump, 当按下空格键设置一个向上的速度。isJump = ture。给角色底部增加一个碰撞器,当和地面发生碰撞时,认为落地了,可以再次发生跳跃,isJump = false。

但是为存在一个问题,当角色在二层地面坠落,这个时候是没有按空格键的。这个怎么判断。

求大神给个方案。

你可以设置成人物和地面碰撞后可以跳跃,人物和地面碰撞结束时(就是人物离开地面时)不能跳跃。

采用计数。想象你有10段跳。按了跳跃计数。别用空中状态计算。

碰撞结束应该用哪个api监听呀。

计数做多段跳是可以的。但是如果存在多个地面,从高的地方走路掉下来的话,这个时候没有办法监听到跳跃状态。

比如你有一个跳跃计数变量,为二段跳时设置为2,每次碰到地面就初始化为2离开地面时-1,按空格时-1,为0时不能跳跃?

理解你的方案,但是这个离开地面的监听怎么做呢?

你脚底不是有个碰撞器吗?判断始终和地面接触的时候不变,离开时-1?我也没做过,只是我是这样想的,你可以去百查下这种应该是有很多人写了做法的

使用一个 体力值 来控制。假如体力 10 跳 -5 空中跳 -5 落地 恢复10。

落地判断。建议你用射线 update 里 判断。 碰撞体 侧面碰撞 你就不好判断了。

你这回复和我意义一样啊,他的问题是假如你能二段跳,你从平台边缘掉下去时应该只能一段跳了,不能再二段跳了,类似i wanna那种

这种也比较好做 判断 掉下去的事件 减去 体力 -5.关

碰撞离开监听:
this.node.getComponent(Collider).on(“onCollisionExit”, this.exit_act, this);
其中this.exit_act是自定义回调函数。

试过这个,这个检测只是一个碰撞的过程,碰撞、碰撞逻辑、碰撞完成。并不是指一个物理离开另一个物体。

应该是这样做,通过射线检测,判断物体和地面的距离是否是0.

exit就是离开,就是碰撞盒和碰撞盒分开的时候调用的。

也可以考虑发射一个 较短的射线 但是你要注意一些细节:一根射线 边缘判断会有问题 可以考虑 使用 多条射线。

1赞