2016-04-04 17 views
0

私は回転する方向に動かさなければならない「車」を持っています。 今、それはちょうど方向に回転し、上下に移動し続けます。私を助けてください。 私はadobe flash pro cs6とactionscript3を使用しています。 私のコードは次のとおりです。フラッシュで回転方向にオブジェクトを移動する方法は?

var upPressed:Boolean = false; 
var downPressed:Boolean = false; 
var leftPressed:Boolean = false; 
var rightPressed:Boolean = false; 

car.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed); 
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed); 

function fl_MoveInDirectionOfKey(event:Event) 
{ 
    if (upPressed) 
    { 
     car.y += 5; 
    } 
    if (downPressed) 
    { 
     car.y -= 5; 
    } 
    if (rightPressed) 
    { 
     car.rotation += 5; 
    } 
    if (leftPressed) 
    { 
     car.rotation -= 5; 
    } 
} 

function fl_SetKeyPressed(event:KeyboardEvent):void 
{ 
    switch (event.keyCode) 
    { 
     case Keyboard.UP: 
     { 
      upPressed = true; 
      break; 
     } 
     case Keyboard.DOWN: 
     { 
      downPressed = true; 
      break; 
     } 
     case Keyboard.LEFT: 
     { 
      leftPressed = true; 
      break; 
     } 
     case Keyboard.RIGHT: 
     { 
      rightPressed = true; 
      break; 
     } 
    } 
} 

function fl_UnsetKeyPressed(event:KeyboardEvent):void 
{ 
    switch (event.keyCode) 
    { 
     case Keyboard.UP: 
     { 
      upPressed = false; 
      break; 
     } 
     case Keyboard.DOWN: 
     { 
      downPressed = false; 
      break; 
     } 
     case Keyboard.LEFT: 
     { 
      leftPressed = false; 
      break; 
     } 
     case Keyboard.RIGHT: 
     { 
      rightPressed = false; 
      break; 
     } 
    } 
} 
+0

あなたの機能** fl_MoveInDirectionOfKey **はあなたの車をxとyの絶対値で動かします。回転や相対移動の余地はありません。あなたはあなたの車に、その位置のベクトル変数とその方向のベクトル変数を追加する必要があります。次に、ベクトル演算を読み込み、ベクトルを回転して平行移動する方法を説明します。最後に、回転を最初に適用します(次に、otが自軸の周りをローカルに回転することを意味します)。次に平行移動(xとyが意図されている画面上に配置することを意味します)。 – Jankapunkt

答えて

1

あなたは車のx,y角度と距離に基づいてを移動するためにvector mathを使用する必要があります。

function move(degrees:Number, speed:Number):void { 
    var radians:Number = degrees * (Math.PI/180); 
    car.x += Math.cos(radians) * speed; 
    car.y += Math.sin(radians) * speed; 
} 

その後、あなたはスピードと車のrotation角度などと5または-5を使用することができます:たとえば、あなたがこのような角度と速度に基づいて、あなたの車を移動することができ

if (upPressed) { 
    move(car.rotation, 5); 
} 
if (downPressed) { 
    move(car.rotation, -5); 
} 

rotation=0は、あなたの車が右向きであることを意味することに注意してください。あなたの車が異なる方向に向いている場合は、あなたが車を描いた角度を補正する必要があります。たとえば、車が上を向いている場合は、move(car.rotation - 90, 5)を使用する必要があります。

+0

ありがとう!出来た。 – uvrichest

関連する問題