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

足し算は割り算や掛け算より速いです。また、変数に格納すると、2 回計算する必要がなくなります。次に、次のことができます。

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 に答える