3

我正在使用 Corona Gaming Addition SDK 构建一个 iphone / andorid 游戏。我在屏幕上有一艘宇宙飞船,我将允许用户将飞船旋转 360 度。然后我想调用 applyLinearImpulse 方法来允许用户将船推向船面向的方向。

该方法接受这些参数,并将其应用于船舶 X 和 Y,以便将船舶移动到新目的地。诀窍是根据船舶指向的旋转/方向确定新的 X 和 Y 需要什么。

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

任何人都这样做了,或者对数学有什么建议可以解决这个问题?

谢谢-m

4

2 回答 2

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
于 2010-10-23T23:33:39.673 回答
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)

问候!

于 2011-01-07T11:06:38.137 回答