2010-10-23 76 views
3

我正在使用Corona Gaming Addition SDK來構建iphone/andorid遊戲。我在屏幕上有一艘太空船,我將允許用戶將船舶旋轉360度。然後,我想調用applyLinearImpulse方法,以允許用戶沿着船舶所面向的方向向前推船。如何使用基於電暈/ Lua旋轉的applyLinearImpulse

該方法接受將這些參數應用於船舶X和Y以便將船舶移動到新的目的地。訣竅是找出新的X和Y需要基於船舶指向的旋轉/方向。

ship:applyLinearImpulse(newX, newY, player.x, player.y) 

任何人都這樣做或有一個數學的建議,會想出來呢?

感謝 -m

回答

2

好吧....約5分鐘後,我張貼了這個我想通了。這裏是答案

speedX = 0.5 * (math.sin(ship.rotation*(math.pi/180))) 
speedY = -0.5 * (math.cos(ship.rotation*(math.pi/180))) 

if(event.phase =="began") then 
    ship:applyLinearImpulse(speedX, speedY, player.x, player.y) 
end 
+2

你應該接受你自己的迴應。否則,問題列表中的問題顯示爲「未回答」。 – kikito 2011-01-16 23:12:21

1

有幾件事情,你可以改善你的代碼。

第一個是你計算角度的方法。取而代之的

ship.rotation*(math.pi/180) 

你可以這樣做:

local inverseRotation = ship.rotation + math.pi 

的加成比除法和乘法運算速度更快。另外,將它存儲在一個變量中將使您無法計算兩次。那麼你可以這樣做:

local inverseRotation = ship.rotation + math.pi 
local speedX, speedY = 0.5 * math.sin(inverseRotation), -0.5 * math.cos(inverseRotation) 

問候!