0

私はコロナが初めてで、移動オブジェクトを操作するための少しの助けを探しています:

基本的には、移動するオブジェクトをクリックするとダイアログ ボックスが表示され、オブジェクトの速度と移動ベクトルを変更するオプションが表示されるように設定したいと考えています。イベント処理とダイアログを理解できると確信していますが、単に移動方向を新しいベクトルに変更することに固執しています

簡単な例では、次のように画面を上に移動する四角形があります。

obj1 = display.newRect(500, 800, 10, 40)
transition.to(obj1,{x=500, y = 100, time = 40000})

時間を調整することで速度を変更できることは知っていますが、

obj1:rotate(30)

オブジェクトを 30 度回転させるには、新しい方向に移動するにはどうすればよいですか?

トランジションの代わりに、たとえば線形インパルスなどの物理を使用する必要がありますか?

これがばかげた質問である場合はお詫びしますが、解決策を見つけることができませんでした。

4

1 に答える 1

1

これはあなたがやろうとしていることのように聞こえます。コードに合わせてビットを変更する必要がありますが、これは実際の例です。したがって、それを新しい main.lua ファイルにコピーして実行すると、どのように機能するかを確認できます。(クリックして obj を回転させます)。

local obj = display.newRect(50,50, 10, 40)
local SPEED = 1
local function move(event)

    obj.x = obj.x + math.cos(math.rad(obj.rotation)) * SPEED
    obj.y = obj.y + math.sin(math.rad(obj.rotation)) * SPEED

end

local function rotate(event)
    obj.rotation = obj.rotation + 45
end

Runtime:addEventListener("enterFrame", move)
Runtime:addEventListener("tap", rotate)

基本的に、「enterFrame」イベントを使用して、オブジェクトの位置の x と y をフレームごとにその回転 (簡単に変更できます) を使用して再計算することにより、長方形を「移動」しました。

于 2013-03-05T16:26:19.730 に答える