You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Phaser 3角色跳跃异常求助:跳跃高度不足或空中可跳且下落缓慢

解决Phaser 3角色跳跃异常问题

嘿,我一眼就瞅到你代码里的问题啦!你的角色跳跃异常完全是因为moveKid函数里的一个小失误——在左右方向键都没按下的else分支里,你不该把Y轴速度也重置为0的,这直接把重力的作用给抵消了!

问题根源拆解

  • 保留this.kid.body.touching.down时跳不高:角色按下跳跃键后,只要左右方向键没按住,就会触发else分支,this.kid.setVelocityY(0)会立刻把跳跃的向上速度清零,导致角色只能弹起一点点就停住;
  • 移除判断后下落慢+空中连跳:虽然能跳起来,但下落过程中只要左右键没按,Y轴速度就会被强制设为0,重力完全失效,所以下落极慢;同时没有touching.down的限制,只要按上键就能一直跳。

修复后的代码

只需要把else分支里的this.kid.setVelocityY(0)删掉,只保留X轴速度的重置就行:

moveKid() { 
    if (this.cursorKeys.left.isDown) { 
        this.kid.setVelocityX(-300) 
    } else if (this.cursorKeys.right.isDown) { 
        this.kid.setVelocityX(300) 
    } else { 
        this.kid.setVelocityX(0); 
        // 移除这行错误的Y轴速度重置
    } 
    if (this.cursorKeys.up.isDown && this.kid.body.touching.down) { 
        this.kid.setVelocityY(-300); 
    } 
}

修复效果说明

修改后:

  • 重力会正常作用于角色,下落时Y轴速度会自然增加,角色能正常落地;
  • this.kid.body.touching.down的判断依然有效,只有角色接触地面时才能触发跳跃,避免空中连跳;
  • 左右移动的逻辑不受影响,松开方向键后角色会立刻停止水平移动。

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

火山引擎 最新活动