如何使对象向前移动?(Corona SDK)

我有一个物理体,并希望它向它面对的方向向前移动。我只有十三岁,这可能解释了为什么我在三角学方面这么差。有人能告诉我如何在Corona中实现这个功能吗?

点赞
用户1137788
用户1137788

代码示例

Er. You don't need Trigonometry just to move the object.

添加

object:translate(distanceToMoveInXAxis,distanceToMoveInYAxis)

或者如果你想要执行一个过渡效果,

transition.to(object,{x=object.x + distanceToMoveInXAxis,y=object.y + distanceToMoveInYAxis})
2012-07-05 12:36:24
用户1440756
用户1440756

我假设你想要用力推动你的物体。无论哪种情况,我们都需要获取你的身体面对的方向的 x 和 y 组件。以下是获取旋转角度的 x 和 y 的方法:

-- body 是你的物理身体 
local angle = math.rad(body.rotation)  -- 我们需要弧度角
local xComp = math.cos(angle)  -- x 组件
local yComp = -math.sin(angle)  -- y 组件是负数,因为屏幕 “向上” 为负

(注意:如果这样做没有得到面朝的方向,你可能需要添加 90,180 或 270 度到你的角度上,例如:math.rad(body.rotation+90))

上面的代码将为你提供旋转方向 单位向量 的 x 和 y 组件。你可能还需要一些乘数来获得所需的力量大小。

local forceMag = 0.5 -- 更改此值以施加更多或更少的力量
-- 现在施加力
body:applyLinearImpulse(forceMag*xComp, forceMag*yComp, body.x, body.y)

以下是我得到的数学内容:http://www.mathopenref.com/trigprobslantangle.html。使用单位向量简化了数学计算,因为斜边的长度始终为 1。

2012-07-06 03:52:36
用户8425022
用户8425022

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

angle = math.rad(在这里插入想要的角度)
character.x = character.x - math.sin(angle)
character.y = character.y + math.cos(angle)
2018-06-01 04:32:42