2012-07-05 65 views
0

我有一個物理機構,我希望它朝着它面對的方向前進。我只是十三歲,我希望解釋爲什麼我在三角學上如此糟糕。任何人都可以告訴我如何在Corona做到這一點?Corona SDK:如何讓對象向前移動?

+1

查看最新評論[here](http://developer.coronalabs.com/forum/2012/01/28/help-shooting-bullets),這可能是你正在尋找的東西。 – brando 2012-07-05 15:12:41

回答

4

我會假設你想用武力把你的對象。無論哪種方式,我們都需要獲得身體所面向的方向的x和y分量。以下是如何得到的旋轉角度的X和Y:

-- body is your physics body 
local angle = math.rad(body.rotation) -- we need angle in radians 
local xComp = math.cos(angle) -- the x component 
local yComp = -math.sin(angle) -- the y component is negative because 
           -- "up" the screen is negative 

(注意:如果這個不給相對方向,你可能需要90,180,或270度添加到您的角度,例如:math.rad(body.rotation + 90))

上面的代碼會給你在旋轉方向上的unit vector的x和y分量。你可能也需要一些乘數來獲得你想要的力量。

local forceMag = 0.5 -- change this value to apply more or less force 
-- now apply the force 
body:applyLinearImpulse(forceMag*xComp, forceMag*yComp, body.x, body.y) 

這裏是我得到的數學:http://www.mathopenref.com/trigprobslantangle.html。使用單位矢量簡化了數學運算,因爲斜邊總是爲1

+0

謝謝!很棒。 – Jutanium 2012-07-06 18:19:47

-1

呃。你不需要三角學就可以移動物體。

添加

object:translate(distanceToMoveInXAxis,distanceToMoveInYAxis) 

或者,如果要執行的過渡,

transition.to(object,{x=object.x + distanceToMoveInXAxis,y=object.y + distanceToMoveInYAxis}) 
+1

他需要數學來計算從面對和速度/移動距離的X,Y移動平移。例如,如果他的對象是200,56,面對的角度是30°(時鐘上的第一隻手),並且我們想要移動62個像素,那麼他對'object:translate'的參數是什麼? – Mud 2012-07-05 20:15:19