2017-09-27 84 views
0

目前,我試圖讓使用電暈SDK自上而下基礎的遊戲。 基本上我想要做的是讓敵人直接移動到地圖的中心。用transition.to()很容易做到這一點,但是當我這樣做時,物體在到達目的地之前就會失去它們的物理特性。科羅娜SDK - 如何實現對對象的路徑與物理

我不知道,反正是有使物體移動象transition.to()但沒有使用它?因爲當他們試圖到達地圖中心時,我確實希望我的物體在途中遇到障礙物。

關於遊戲場景: 它就像一個塔防遊戲,中間有一個物體(城堡),需要被其他物體(敵人)擊中,並從側面隨機重生。

下面是一些代碼:

function spawnEnemy() 
    for i=1,numberEnemies do 
     enemy = display.newImage("enemy.png") 
     physics.addBody(enemy,"dynamic") 
     enemy:addEventListener("tap",enemyKill) 
     enemy.gravityScale = -0 

     if math.random(2) == 1 then 
      enemy.x = math.random(-100, -10) 
      enemy:setLinearVelocity(50,0) 
     else 
      enemy.x = math.random (display.contentWidth + 10, display.contentWidth + 100) 
      enemy:setLinearVelocity(-40,0) 
     end 
      enemy.y = math.random(display.contentHeight) 
      --enemy.trans = transition.to(enemy, {x=centerX, y=centerY, time=5000,onComplete=hitCastle}) 

    end 
    timer.performWithDelay(10000, spawnEnemy, 0) 
end 

回答

0

應設置敵人的線速度,使向中心敵人的頭。一旦敵人與城堡相撞,就可以從場景中移除敵方物體。爲此,您必須計算兩點(敵人和中心)之間的矢量,然後將矢量的X和Y值乘以希望敵人移動的速度。

Enemy position = (EnemyXPos, EnemyYPos) 
Center Position = (CenterXPos, CenterYPos) 
Velocity Vector = (CenterXPos - EnemyXPos, CenterYPos - EnemyYPos) 

然後,您需要正常化速度矢量(不包括在此答案),這將給你x和從敵人的中心點與1

長度的矢量的y值

要調整速度:

Adjusted Velocity Vector = (NormalizedVelXVal * Speed, NormalizedVelYVal * Speed) 

此時,只需設定敵人等於上面計算的調整速度矢量線速度。

+0

這正是我所期待的,thx! –