ジャンプ時、普通にコマンド内の「アニメ」を設定するだけではジャンプ中にアニメが終了する事があったり、小ジャンプした場合は地面に着地してもジャンプのアニメが終っていない事があります。他にも、移動すると空中で歩いてしまったりと、不自然ですよね。
まずは、ジャンプアニメーションを付けたい対象キャラクターの画像bmpファイル内に「ジャンプを実行した際」、「空中にいる際」、「着地した際」の画像をそれぞれ描きましょう。イメージとして、それぞれの画像の役割はこんな感じです。
フローの設定方法によっては上記3つすべてのアニメーションが必要とは限りません。
(詳細は応用テクニックの項目にて)
逆に、長い髪やマント、スカートなど、風圧で“なびく”要素を持ったキャラクターを描きたいのであれば、こうした3つのアニメーションが必要になるかも知れません。
次に、ジャンプアニメーションを作る上で必要な「基本アニメセット」と「アニメ」を作成します。
まずは「基本アニメセット」からです。「プロジェクト」内の「データベース」を開き、「基本アニメセット」に、ジャンプアニメを付けたい対象キャラの普段の動作セットとは別の新しいアニメセットのデータを作成します。わかりやすいように、普段の動作の名称を「○○○(通常)」とし、これから作る動作を「○○○(空中)」とすると良いかもしれません。(“○○○”にはキャラクター名など)
新たに作成したの基本アニメセット内容の「静止」と「移動」に、先程作った「空中にいる際」の画像を登録します。(「飛行」と「飛行移動」については、ここでは特に設定しなくても大丈夫です。)
次は、同じくデータベース内の「アニメ」を開き、今度は「ジャンプ実行」と「着地」それぞれのデータを作ります。デフォルトのジャンプの高さであれば、「ジャンプ実行」の表示時間(1/10s)は計3~6くらいになるのが適切かもしれません。「着地」は、着地後すぐに歩き出したりした際にまだ着地姿勢のままでは不自然になるので1にします。(これらの時間目安ははあくまでも筆者の独断です。)
それではいよいよ、これまで作成したデータをキャラクターに適用していきましょう。キャラクター用のコモンパレットから「主人公」の個別キャラデータを開き、「4(フロー)」の設定ページを選びます。
本項の方法でジャンプアニメーションを付ける上で使用するフローは計3つです。
また、空中の基本アニメセットを使用する上で“キャラ変数”を一つ使用することになります。今回は「1キャラ変数-1」を使用するものとします。感覚としては、地面にいる状態の変数が「0」、空中にいる状態が「1」となるように設定しています。
【タイミング】 常時
【基本条件】 1キャラ変数-1が 0 である
【キー条件】 X:押(1~∞)
【コマンド】
コレを入れないと、ブロックキャラに乗っている状態からジャンプする際にアニメ変更が行われません。
変数を使用している理由はジャンプ中にXキーを押したときに、ジャンプのアニメが実行されるのを防ぐためと着地時のフローが実行され続けるのを防ぐためです。
※
画像にあるようにグループ化は行わなくても大丈夫です。デフォルトデータの名残です。またIDについては、「ヒットバック(ダメージを受けた際の硬直)」でキー操作を一時制御するために使用する場合があるため、ここでは「B」に設定しています。
【タイミング】 常時
【基本条件】 1キャラ変数-1が 0 である
自分がブロック(キャラ含む)に乗っていない
【キー条件】 -
【コマンド】
ブロックに乗っていないとき(尚且、変数が0のとき)に実行されます。
基本アニメセットを変更し、変数に1を代入します。
【タイミング】 常時
【基本条件】 1キャラ変数-1が 1 である
自分がブロック(キャラ含む)に乗っている
【キー条件】 -
【コマンド】
変数=1であるときに「ブロックに乗った(キャラの下にブロックが当たっている)」場合に実行されます。
フローの操作でID:A(移動する為のフロー)を一時停止する理由は、着地の瞬間だけ移動を禁止する為です。着地時のアニメーションが必要のない方や、ウェイトを入れたくない方は設定しなくても結構です。ちなみに「移動の無効化」コマンドを使用すると地に足が付いてない状態になるので問題が生じます。気になる方は試してみましよう。
下準備の項目で述べた通り、単純なアニメーションであればフローをもっと簡略化することも可能です。
例えば、ファミコンの『スーパーマリオ』や『ロックマン』のような一枚絵のジャンプの場合「空中」のみの画像を用意して基本アニメセットのデータを設定し、フロー①コマンドのジャンプのアニメを「なし(変更しない)」にします。アニメが再生されないのでフロー③でアニメを終了させる必要もないので、「アニメの実行」も必要なくなります。
逆に「空中」のアニメーションが不要という場合(ジャンプではアニメーションが変化しても、段差を降りたりした際には通常姿勢のままがいい)という場合であれば、「ジャンプ実行」アニメの表示時間を最大値の「9999」に設定し、各フローの「基本アニメセットの変更」コマンドを削除するという方法もあります。「空中」だけでなく「着地」も不要であれば、フロー③の「アニメの実行」を“「ジャンプ実行」の終了”に設定し、フロー②は丸々削除しても良いでしょう。場合によっては変数に関する条件設定やコマンドも不必要かもしれません。
ひと通りフローを組むとこのような感じにアニメーションさせることが可能になります。
参考動画 http://twitvideo.jp/05Sjs ※twitvideoに移動します。
2015/09/14追記
因みに上記の方法ではステージ開始時、一瞬だけジャンプグラフィックになったり、ジャンプの調節が途中からできない、ジャンプ終了直前にソードなどのアクションをするとジャンプグラフィックのままになったりする。
ジャンプの調整ができない問題は上記のジャンプ実行のフローを用いて以下のようにコマンドを変更すると起きなくなる。
◆円移動◆速180 角0~19
◆ステータスの操作◆自分の「1キャラ変数-1」を=1
◆基本アニメセットの変更◆主人公_ジャンプ中
◆ジャンプ◆高さ9
2016/06/26 追記2
ステージ開始時、一瞬だけジャンプグラフィックになるものに関しては、
ウェイト1→ジャンプ用の変数を1に→このフローを削除というフローを作った後に
それぞれの元のジャンプ変数の条件やコマンドの変数に1を加算しておけば大丈夫
(ステージ開始前0、開始ほぼ直後からブロックに乗っているとき1、ジャンプ中やブロックに乗っていないとき変数が2になるようにすればいい)