2016-04-04 18 views
0

Döndüğü yönde hareket etmesi gereken bir "arabam" var. Şimdi sadece bir yönde dönüyor ve yukarı ve aşağı devam ediyor. Lütfen bana yardım edin. Adobe flash pro cs6 ve actionscript3 kullanıyorum. Benim kodudur:Nesne flaş yönünde dönme yönünde nasıl hareket ettirilir?

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

Fonksiyonunuz ** fl_MoveInDirectionOfKey ** aracınızı mutlak x ve y değerlerinde hareket ettirir. Herhangi bir dönüş veya nispi hareket için yer yoktur. Aracınıza konum için bir vektör değişkeni ve yön için bir vektör değişkeni eklemelisiniz. Sonra vektör matematiğine ve vektörleri nasıl çevirip çevireceğinizi okumaya başlamalısınız. Son olarak, önce rotasyon uygularsınız (daha sonra yerel olarak, kendi ekseni etrafında dönmektedir) ve daha sonra çeviri (yani x'in ve y'nin olması istenen ekrana yerleştirdiğiniz anlamına gelir). – Jankapunkt

cevap

1

Sen Araba x,y bir açı ve mesafeye göre hareket etmek vector math kullanmak gerekir.

Örneğin, böyle bir açı ve hızına göre araç hareket olabilir:

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; 
} 

Sonra kullanabilirsiniz Araba rotation hızı gibi açı ve 5 veya -5 olarak:

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

Bu, rotation=0'un, aracınızın sağa baktığı anlamına geldiğini varsayar. Aracınızı farklı bir yöne çekerseniz, arabanızı çizdiğiniz açıyı telafi etmeniz gerekir, örneğin araç yukarıya bakacak olursanız move(car.rotation - 90, 5)'u kullanmanız gerekir.

+0

Teşekkürler! işe yaradı. – uvrichest

İlgili konular