-1

当使用 AS3 和 Box2D 创建玩家时,我们可以让玩家移动,但是我们无法让玩家像使用 AS3 移动时那样移动,例如 x++;而不是 ApplyImpulse(new b2Vec2(1,0),GetWorldCenter())。我们怎样才能让玩家移动得更像闪光灯一样,我们也尝试了 ApplyForce 和 SetPosition,它们不能正常工作!播放器非常浮动或不会立即响应控制,任何建议将不胜感激!

如果有问题你会解释它而不是放下然后离开吗?

4

1 回答 1

1

您为什么不尝试使用 GetLinerVelocity 和 ApplyImpulse,它可以使用我使用此属性制作的功能,当然我之前使用确切的键制作了两个功能......我的意思是:

player_normal 只是处于静止状态的 Player(对象)。当然, player_max_speed 和 player_speed 只是我添加的其他属性,可以随心所欲地移动......

            player_speed = 2;
            player_max_speed = 4;
            player_normal = new b2Vec2(0, 0);

这在函数 Main 中。您将它们设置为 Number var 的 speed 和 max_speed,正常情况下只是 b2Vec2。

这是按下然后向上键时的键功能:

private function apreto(e:KeyboardEvent):void
        {
            switch (e.keyCode)
            {
                case 37: 
                    left = true;
                    break;
} 

private function suelto(e:KeyboardEvent):void
        {
            switch (e.keyCode)
            {
                case 37: 
                    left = false;
                    break;
}

当然,“左”是一个布尔值。我认为很容易......而且你必须对每个键(右,上,下)做同样的事情,这取决于你想要什么样的键。例如数字 37 = 键盘左侧的键。

然后是让玩家移动的代码(在更新中):

if (player_normal.x >= 0)
            {
                if (left)
                {
                    if (player.GetLinearVelocity().x > -player_max_speed)
                    {
                        player.ApplyImpulse(new b2Vec2( -player_speed, 0), player.GetWorldCenter());
                    }
                }
            }

我希望它可以帮助你......如果不让我知道,我有另一种更容易的方法。如果我能回答您的任何问题,我将不胜感激。

于 2012-11-20T12:51:19.020 回答