GetLinerVelocity を使用してから、ApplyImpulse を使用してみませんか。このプロパティで作成した機能が動作する可能性があります。もちろん、正確なキーを使用して前に 2 つの関数を作成しました...つまり、次のようなものです。
player_normal は、休息中のプレイヤー (オブジェクト) です。もちろん、player_max_speed と player_speed は、私が好きなように移動するために追加する他のプロパティです...
player_speed = 2;
player_max_speed = 4;
player_normal = new b2Vec2(0, 0);
これは関数 Main に入ります。それらを Number var として設定した速度と 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());
}
}
}
それがあなたの役に立てば幸いです...私に知らせなければ、もっと簡単な別の方法があります。ご質問にお答えできることがあれば、喜んでお手伝いさせていただきます。