2012-01-30 10 views
0

私は比較的新しいコロナですが、私がtransition.toを理解しているかどうかまだ分かりませんので、私に同行してください。私は "浮動"(重力は(0、-4)に設定されている)オブジェクトを画面上に持っています。だから、それは「ダイナミックな」物理学のボディであり、他のすべての物理学のボディと適切に相互作用します。衝突リスナーは完全に動作しています。しかし、オブジェクトであるバルーンが150のYに達すると、オブジェクトを画面上の低い位置に250msで移動させたいと思います。しかし、自分のコードを実行すると、バルーンは画面上のランダムな点に行き、矛盾します。私はアニメーションをトランジションで正しく機能させることができません

local function move(event) 

     If (balloon.y <= 150) then 
      transition.to(balloon, {time = 250, x = balloon.x, y = 320); 
     end 
    end 


    Runtime:addEventListener("enterFrame", move); 

私はenterFrameリスナーがすべての30-60msと呼ばれているので、それよりも時間がかかる遷移は、基本的に移行を完了することができません、繰り返し関数を呼び出しますことを読みました。それが問題なら、これを行うにはよりよい方法がありますか?

答えて

1

重複するコールを防止したい場合は、isInTransition(これは任意です)をballoonに置き、すべてのコールでそのステータスを確認してください。

local function move(event) 

    if not balloon.isInTransition then 
     if (balloon.y <= 150) then 
      transition.to(balloon, {time = 250, x = balloon.x, y = 320) 
      balloon.isInTransition=true 
     elseif balloon.y == 320 then 
      balloon.isInTransition=nil 
     end 
    end 
end 

Runtime:addEventListener("enterFrame", move); 

transition.to()と混合物理的相互作用(例えば、衝突)がある場合は、物理遷移にうまく機能しません。

バルーンを衝突することなく下部の場所に移動させたい場合は、balloon.isSensor=true/falseを試すことができます。

ディスカッションhereあなたと似たようなケースがあります。

+0

ありがとうございました! –