Corona SDK:如何让对象向前发展?

时间:2012-07-05 11:09:25

标签: lua corona

我有一个物理身体,我希望它朝着它面向的方向前进。我只有十三个,我希望解释为什么我在三角学方面如此糟糕。有谁能告诉我如何在Corona中做到这一点?

3 个答案:

答案 0 :(得分:5)

我会假设你想用力推动你的物体。无论哪种方式,我们都需要获得身体所面向方向的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

答案 1 :(得分:0)

在使用令人困惑的物理学之前,如何让自己的角色朝着一个角度移动?

angle = math.rad(Insert the angle you want here)
character.x = character.x - math.sin(angle)
character.y = character.y + math.cos(angle)

答案 2 :(得分:-1)

尔。您不需要Trigonometry来移动对象。

添加

object:translate(distanceToMoveInXAxis,distanceToMoveInYAxis)

或者如果您想要进行转换,

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