0

ここはちょっと絶望的。Corona SDK でランナー ゲームを作成しようとしていますが、ジャンプ アニメーションから実行中 (ジャンプ後に戻る) に移行できません。

local function touched(event)     
if(event.phase == "began")then

char.accel = monster.accel + 20
char:prepare("jumping")
char:play()
else


char:prepare("running")
char:play()     

end     
end

このコードでは、プレイヤーが画面に触れ続けると、ジャンプのアニメーションが地面で繰り返され続けます。接触イベントを時間内に制限する方法はありますか?

また、別の構造を介してアニメーションを実装しようとしました:

     if(onGround) then
           if(wasOnGround) then

           else
                monster:prepare("running")
                monster:play()
           end
      else
           monster:prepare("jumping")
           monster:play()
      end

しかし、なぜかジャンプアニメーションが最初のフレームしか表示されません。

どんな助けでも大歓迎です!前もって感謝します。

4

1 に答える 1

2

ここには 2 つの実行可能なオプションがあります。

1)ジャンプに常に同じ時間がかかる場合は、タイマーを使用して、ユーザーが着陸することがわかるまで、ユーザーが再びジャンプするのを防ぐことができます。(タイマーは変数を変更したり、イベントリスナーを削除して再追加したりできます。どちらも機能します。)

または

2) 上記と同様の操作を行います。プレーヤーにコリジョン リスナーを追加して、プレーヤーが地面に着地したときにフラグが設定されるようにします。たとえば、player.canJump が true に設定され、ジャンプアニメーション。キャラクターが再び地面にぶつかったら、true に設定し直して、実行中のアニメーションをもう一度再生します。

于 2012-07-09T11:10:42.863 に答える