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

2D平台游戏角色专属浮空能力错误赋予所有角色的问题解决

角色专属浮空能力逻辑错误排查与修复

我编程基础还在学习阶段,目前在做一款类似《超级食肉男孩》的2D平台游戏。跟着教程搭完基础移动系统后,我加了布尔变量来切换不同角色,给每个角色设置专属属性和能力,但遇到了逻辑问题:

原代码里的浮空触发条件:

if (_jumpBufferTimer > 0f && isMif && InputManager.JumpIsHeld && _isJumping && _isFalling || _isFastFalling)
{
    _isFloating = true;
}

原本想让浮空能力只属于isMif为true的角色,但实际即使isMif为false,其他角色只要进入快速下落(_isFastFalling为true)就能触发浮空。我试过加!isTurdo(另一个角色的布尔变量)也没用,只要isTurdo为true且处于快速下落状态,还是能浮空。

后来我把条件语句改成这样就解决了问题:

if ((_jumpBufferTimer > 0f && isMif && InputManager.JumpIsHeld && _isJumping && _isFalling) || (_isFastFalling && isMif))
{
    _isFloating = true;
}

问题根源

这是逻辑运算符优先级导致的:&&的优先级比||高,原条件会被编译器自动解析成:

(_jumpBufferTimer > 0f && isMif && InputManager.JumpIsHeld && _isJumping && _isFalling) || _isFastFalling

也就是说,只要_isFastFalling为true,不管isMif是不是false,整个条件都会成立,直接触发浮空。

修复思路

用括号把两个条件分支明确分组,确保两个分支都必须满足isMif为true:

  • 第一个分支:满足跳跃缓冲、Mif角色、按住跳跃键、正在跳跃且下落时触发浮空
  • 第二个分支:只有Mif角色处于快速下落状态时,才触发浮空

这样就严格限制了浮空能力只能由isMif为true的角色触发,其他角色即使进入快速下落也无法激活这个能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:47:42