阻止box2d播放器在半空中按压墙壁

时间:2011-11-20 22:00:39

标签: flash actionscript-3 box2d physics

我已经设置了一个带键盘控制播放器的box2d世界。玩家可以走路和跳跃。如何在向对象跳跃并按方向键时阻止玩家“粘住”墙壁?

enter image description here

4 个答案:

答案 0 :(得分:6)

将玩家身体作为一组身体(在左侧和右侧添加装置)?并将摩擦力设为0 enter image description here

答案 1 :(得分:3)

您需要改变影响角色身体的方式。你用什么方法左/右移动他?尝试在身体上使用applyLinearImpulse,并确保您在身体定义中的摩擦力不是很高。

答案 2 :(得分:1)

您可以将播放器的摩擦力设置为0,然后在每个循环中执行一个功能,当用户未按下移动键时,将X中的速度设置为零。在您检查事件的方法中,您应该添加:

if (event.type == KeyReleased) {
    if (!isKeyPressed(Keyboard::Left) && !isKeyPressed(Keyboard::Right)) {
        player.stop();
     }
}

在你的player.stop()中你应该做类似的事情:

b2Vec2 vel = body->GetLinearVelocity();
vel.x = 0;
body->SetLinearVelocity(vel);

这将使您的玩家与具有iceskating

的平台产生摩擦0

答案 3 :(得分:-1)

这完全取决于你的物理学目前的工作方式,因为有很多可能性。在我看来,最简单的方法是将显示的主体分成4个边界墙(顶部,左侧,右侧,底部),只有可行走的地板(顶部)产生摩擦。