【ジャンプ時のアニメーションの設定方法】

 ジャンプ時、普通にコマンド内の「アニメ」を設定するだけではジャンプ中にアニメが終了する事があったり、小ジャンプした場合は地面に着地してもジャンプのアニメが終っていない事があります。他にも、移動すると空中で歩いてしまったりと、不自然ですよね。

 

 本項では、空中でジャンプ姿勢が持続され、着地時に普段のアニメーションに戻る方法を解説します。
(主人公キャラにジャンプアニメーションを付けるものとします。)

 

 

1.下準備

① 画像の準備

 まずは、ジャンプアニメーションを付けたい対象キャラクターの画像bmpファイル内に「ジャンプを実行した際」、「空中にいる際」、「着地した際」の画像をそれぞれ描きましょう。イメージとして、それぞれの画像の役割はこんな感じです。

 

  • ジャンプ実行:地面から空中へ向かって上昇してる際のアニメーション
  • 空中:空中から地面へ向かって下降している際のアニメーション
  • 着地:地面に着地、およびジャンプ実行含む着地までに実行したアニメーションをキャンセルするためのアニメーション

 

 フローの設定方法によっては上記3つすべてのアニメーションが必要とは限りません。
(詳細は応用テクニックの項目にて)

 逆に、長い髪やマント、スカートなど、風圧で“なびく”要素を持ったキャラクターを描きたいのであれば、こうした3つのアニメーションが必要になるかも知れません。

 

 

② 基本アニメセットとアニメの設定

 次に、ジャンプアニメーションを作る上で必要な「基本アニメセット」と「アニメ」を作成します。
 

 まずは「基本アニメセット」からです。「プロジェクト」内の「データベース」を開き、「基本アニメセット」に、ジャンプアニメを付けたい対象キャラの普段の動作セットとは別の新しいアニメセットのデータを作成します。わかりやすいように、普段の動作の名称を「○○○(通常)」とし、これから作る動作を「○○○(空中)」とすると良いかもしれません。(“○○○”にはキャラクター名など)

 

 新たに作成したの基本アニメセット内容の「静止」と「移動」に、先程作った「空中にいる際」の画像を登録します。(「飛行」と「飛行移動」については、ここでは特に設定しなくても大丈夫です。)

 

 次は、同じくデータベース内の「アニメ」を開き、今度は「ジャンプ実行」と「着地」それぞれのデータを作ります。デフォルトのジャンプの高さであれば、「ジャンプ実行」の表示時間(1/10s)は計3~6くらいになるのが適切かもしれません。「着地」は、着地後すぐに歩き出したりした際にまだ着地姿勢のままでは不自然になるので1にします。(これらの時間目安ははあくまでも筆者の独断です。)

 

 

2.フローの設定

 それではいよいよ、これまで作成したデータをキャラクターに適用していきましょう。キャラクター用のコモンパレットから「主人公」の個別キャラデータを開き、「4(フロー)」の設定ページを選びます。

 

 本項の方法でジャンプアニメーションを付ける上で使用するフローは計3つです。

 

  1. ジャンプ実行のフロー(今回は「X」キーを押したときに実行)
  2. 空中にいる状態のフロー(ジャンプしたりブロックを踏み外したりして、ブロックから離れた際に実行)
  3. 着地(空中からブロックおよびブロックキャラに着地した際に実行)

 

 また、空中の基本アニメセットを使用する上で“キャラ変数”を一つ使用することになります。今回は「1キャラ変数-1」を使用するものとします。感覚としては、地面にいる状態の変数が「0」、空中にいる状態が「1」となるように設定しています。

 

《フロー①:ジャンプ実行》

【タイミング】 常時
【基本条件】 1キャラ変数-1が 0 である
【キー条件】 X:押(1~∞)
【コマンド】

  • こちらの応用テクを参考に1フレーム程のウェイトを入れる(普通のウェイトだと長い感じがします)
  • アニメの実行:ジャンプ実行
  • ジャンプ(設定画面のアニメは「なし(変更しない)」、効果音は任意で)
  • ウェイト(普通の1/10sでOK)
  • ステータスの操作:自分の1キャラ変数-1を「=1」にする。
※アニメセットを変更する前にウェイトを入れる理由※

コレを入れないと、ブロックキャラに乗っている状態からジャンプする際にアニメ変更が行われません。

フロー1

 変数を使用している理由はジャンプ中にXキーを押したときに、ジャンプのアニメが実行されるのを防ぐためと着地時のフローが実行され続けるのを防ぐためです。

※ 画像にあるようにグループ化は行わなくても大丈夫です。デフォルトデータの名残です。またIDについては、「ヒットバック(ダメージを受けた際の硬直)」でキー操作を一時制御するために使用する場合があるため、ここでは「B」に設定しています。

 

《フロー②:空中(ブロックから離れたとき)》

【タイミング】 常時 
【基本条件】 1キャラ変数-1が 0 である
      
自分がブロック(キャラ含む)に乗っていない 
【キー条件】 -
【コマンド】

  • 基本アニメセットの変更(空中アニメセット
  • ウェイト(1/10s)
  • ステータスの操作:自分の1キャラ変数-1を「=1」にする。

フロー3

 

 ブロックに乗っていないとき(尚且、変数が0のとき)に実行されます。
基本アニメセットを変更し、変数に1を代入します。

 

《フロー③:着地》

【タイミング】 常時 
【基本条件】 1キャラ変数-1が 1 である
      自分がブロック(キャラ含む)に乗っている

【キー条件】 -
【コマンド】

  • フローの操作(自分の指定ID「A」を一時停止)←任意
  • アニメの実行(「着地」)
  • 基本アニメセットの変更(通常時のアニメセットに戻す)
  • ウェイト(1/10s)
  • ステータスの操作:自分の1キャラ変数-1を「=0」にする。
  • フローの操作(自分の指定ID「A」を一再開)←任意

フロー2

 変数=1であるときに「ブロックに乗った(キャラの下にブロックが当たっている)」場合に実行されます。
フローの操作でID:A(移動する為のフロー)を一時停止する理由は、着地の瞬間だけ移動を禁止する為です。着地時のアニメーションが必要のない方や、ウェイトを入れたくない方は設定しなくても結構です。ちなみに「移動の無効化」コマンドを使用すると地に足が付いてない状態になるので問題が生じます。気になる方は試してみましよう。

 

 

3.応用テクニック

 下準備の項目で述べた通り、単純なアニメーションであればフローをもっと簡略化することも可能です。

 

 例えば、ファミコンの『スーパーマリオ』や『ロックマン』のような一枚絵のジャンプの場合「」のみの画像を用意して基本アニメセットのデータを設定し、フロー①コマンドのジャンプのアニメを「なし(変更しない)」にします。アニメが再生されないのでフロー③でアニメを終了させる必要もないので、「アニメの実行」も必要なくなります。

 

 逆に「空中」のアニメーションが不要という場合(ジャンプではアニメーションが変化しても、段差を降りたりした際には通常姿勢のままがいい)という場合であれば、ジャンプ実行アニメの表示時間を最大値の「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になるようにすればいい)

 

最終更新:2020年01月27日 20:16
添付ファイル