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

Box2D角色移动时无法下落问题技术求助

问题分析与解决

你的问题出在移动代码逻辑里:当按下左右键时,你直接将刚体的线性速度设置为b2Vec2(5, 0)或b2Vec2(-5, 0),这会把y轴速度强制设为0,覆盖了Box2D重力作用下的下落速度,导致角色无法继续下落。

修正后的代码

你需要保留当前的y轴速度,只修改x轴的速度:

// 获取当前刚体的线性速度
b2Vec2 currentVelocity = p_pBody.body->GetLinearVelocity();

if (right == true) {
    // 仅修改x轴速度,保留重力带来的y轴速度
    p_pBody.body->SetLinearVelocity(b2Vec2(5, currentVelocity.y));
} else if (left == true) {
    p_pBody.body->SetLinearVelocity(b2Vec2(-5, currentVelocity.y));
} else {
    // 无移动输入时,可保留y轴速度,x轴减速至0
    p_pBody.body->SetLinearVelocity(b2Vec2(0, currentVelocity.y));
}

// 图形位置应从Box2D刚体位置同步,避免物理与视觉脱节
b2Vec2 bodyPos = p_pBody.body->GetPosition();
p_pBody.rect.setPosition(bodyPos.x * s_METPX, bodyPos.y * s_METPX);

额外提示:不要直接用p_xPos/p_yPos设置图形位置,应该从Box2D刚体的实时位置同步,否则容易出现物理状态和视觉显示不一致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:20:27