AS3 Box2D播放器运动

时间:2012-11-01 13:59:33

标签: actionscript-3 box2d game-physics path-finding game-development

当使用AS3和Box2D创建一个玩家时,我们可以让玩家移动但是我们无法让玩家移动,就像它只是用AS3移动一样,例如x ++;而不是ApplyImpulse(新的b2Vec2(1,0),GetWorldCenter())。我们怎样才能让玩家更像闪存一样移动,我们也尝试过不能正常工作的ApplyForce和SetPosition!玩家非常漂浮或者不会立即响应控件,任何建议都会非常感激!

如果出现问题,请解释一下而不是停下来?

1 个答案:

答案 0 :(得分:1)

为什么不尝试使用GetLinerVelocity,然后尝试使用ApplyImpulse,它可以使用这个属性,当然我之前使用正确的键创建了两个函数...我的意思是:

player_normal只是休息中的玩家(对象)。当然,player_max_speed和player_speed只是我喜欢移动的其他礼物......

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

这是功能Main。 speed和max_speed将它们设置为Number var,而法线只是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());
                    }
                }
            }

我希望它可以帮到你...如果不让我知道,我还有另一种方式可以更轻松。 如果我能回答你的任何问题,我将非常感谢你的帮助。