当使用 AS3 和 Box2D 创建玩家时,我们可以让玩家移动,但是我们无法让玩家像使用 AS3 移动时那样移动,例如 x++;而不是 ApplyImpulse(new b2Vec2(1,0),GetWorldCenter())。我们怎样才能让玩家移动得更像闪光灯一样,我们也尝试了 ApplyForce 和 SetPosition,它们不能正常工作!播放器非常浮动或不会立即响应控制,任何建议将不胜感激!
如果有问题你会解释它而不是放下然后离开吗?
当使用 AS3 和 Box2D 创建玩家时,我们可以让玩家移动,但是我们无法让玩家像使用 AS3 移动时那样移动,例如 x++;而不是 ApplyImpulse(new b2Vec2(1,0),GetWorldCenter())。我们怎样才能让玩家移动得更像闪光灯一样,我们也尝试了 ApplyForce 和 SetPosition,它们不能正常工作!播放器非常浮动或不会立即响应控制,任何建议将不胜感激!
如果有问题你会解释它而不是放下然后离开吗?
您为什么不尝试使用 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());
}
}
}
我希望它可以帮助你......如果不让我知道,我有另一种更容易的方法。如果我能回答您的任何问题,我将不胜感激。