NULLパーツの使い方

NULLパーツは「参照セル」の情報を持たない、位置情報や反転といったアトリビュートのみのパーツです。
フレームコントロールウィンドウのパーツ名の前にWindow_frame_icon10がついているのが「NULLパーツ」になります。

アニメーションの基準位置をNULLパーツで設定したり、汎用アニメーションのためのボーンとして使用したり、さまざまな使用方法があります。

NULLパーツの追加方法

「NULLパーツ」を追加する方法は以下のふたつがあります。

  1. 「フレームコントロール」ウィンドウのツールバーにあるWindow_frame_icon01「NULLパーツの追加」ボタンを押す
  2. 「フレームコントロール」ウィンドウのコンテキストメニューで「NULLパーツの追加」を選択する

NULLパーツを編集する

NULLパーツは参照セルの情報が無い透明のパーツなので、フォーカス枠で操作しにくい場合はギズモIK00を使用すると的確に操作することができます。

ギズモは現在選択されているパーツの原点位置を中心に表示されます。

ギズモはレイアウトウィンドウ上部の「ギズモを表示IK00」アイコンをクリックして有効にすることで使用することが可能です。

NULLパーツの使い方

「アニメーションの基準位置」として

キャラクターが「走る」アニメーションを作りたい場合、「rootパーツ」を地面の接地点としてしまうと、キャラクター本体の基準位置とするパーツをどうすればよいか悩んでしまいます。

そんなときは「rootパーツ」の直下に「NULLパーツ」を作成し、そのNULLパーツをキャラクターの基準位置とします。
キャラクターの各パーツをそのNULLパーツの子パーツにすることで、「接地点」と「キャラクターの基準点」を両方持ったアニメーションを作成することができます。

FAQ_ss_faq04_a

上の図の例では、rootパーツを接地点に設定し、「Base」というNULLパーツをアニメーションの基準位置に設定しています。 

装備に応じて武器の絵を切り替える等、表示の制御に

武器を振るうアニメーションなどを作成する際、「キャラクタの手の位置」に、物を持たせる目印・位置指定として、手の子パーツに「NULLパーツ」を設置すると便利です。

例えば「装備に応じて持っている物を変えたい」場合は、手の子パーツにNULLパーツを作成することで、持っている物を切り替えることができます。

汎用アニメーションを作る時のボーンとして

「関節を持つアニメーションのボーン(骨)」として複数のNULLパーツで親子関係を構築することで、パーツを「ボーン」のように配置し、「歩く」「攻撃」といった汎用アニメーションを作成できます。

右図のようにパーツの親子関係をNULLパーツで作り、それぞれのNULLパーツの子パーツとして、それぞれの部位を配置することで、様々なポーズやアニメーションを作ることができます。

この状態で、配置しているパーツを別のテクスチャと交換すると、別のキャラクタ画像で同じアニメーションを作成することも可能です。

大量にキャラクターがいる場合、キャラクター毎にアニメーションを作成しなくてもよいため、大変便利です。

パーツをプログラムで差し替えられるような仕組みを構築したい

NULLパーツを使って画像とアトリビュート設定を別にすることで、パーツをプログラムで差し替えられる仕組みを構築することができます。

1.親子関係で構成されたキャラクターを作成します null_05_a

2.キャラクターの親子構成の中で、一番上の親を選択し、右クリックします。
コンテキストメニューの「複製」でパーツを複製します。

右図の場合は「hip」を選択し、複製しています。

null_05_b

3.hip以下のパーツが複製され、2つ同じ構成の親子関係ができました。

複製元のパーツをNULLパーツに変更します。
「カラーラベル」で色分けしておくと、判別しやすくなり便利です。

パーツを選択した状態で右クリックし、コンテキストメニューから「カラーラベルを指定する」でカラーラベルを設定することができます。

null_05_c

4.複製したパーツを、複製元のパーツの子になるように、親子関係を構築していきます。

null_05_d

5.複製元のパーツをNULLパーツに変更します。

null_05_e

6.NULLパーツに対し、アニメーションを設定していきます。

複製した子パーツには、1フレーム以外にはキーを設定しないでください。

null_05_f

7.アニメーションが完成したら、ssaeをアプリケーションにインポートしてください。

子パーツと紐づく画像をプログラム上で差し替えることで、パーツをプログラムで切り替えることが可能です。

null_05_h

なお、NULLパーツと子パーツを調整することで、体格の違うキャラクターにも同じようなアニメーションをさせることが可能です。

パーツに依存しない当たり判定を設定したい時に

パーツの位置、大きさに依存しない当たり判定を設定したい場合、NULLパーツを応用することで「当たり判定」用の透明なパーツを作成することができます。

  1. フレームコントロールウィンドウの左上にある「Window_frame_icon01NULLパーツの追加」で、新しいNULLパーツを作成します
  2. アトリビュートウィンドウの「パーツ情報」欄の、「パーツ種別」を「通常」に変更します。
  3. 「パーツ情報」欄の「当たり判定」を「四角形」にします。
  4. アトリビュート「X/Yスケール」に任意のサイズ入力し、サイズ調整します。
  5. 作成したパーツを、当たり判定をつけたいパーツの子パーツとして設定し、親子関係を構築します。
「hip」というパーツの当たり判定を「四角形」に設定した場合、「hip」のパーツの位置、大きさに合わせて設定されます。 null_01
上記手順に則って、当たり判定用のパーツを作成することで、当たり判定を自由に設定することができます。 null_02

アニメーションデータを左右反転させたいときに

rootパーツや、一番親となるデータの1つ下にNULLパーツを作成し、アトリビュートの「Xスケール」を「-1」にすると、下図のように、レイアウトを崩さずに左右反転することが可能です。
上下反転させたい場合は「Yスケール」を「-1」にしてください。

FAQ_ss_faq06

この方法を利用すると、IK(インバースキネマティクス)が正常に動作しなくなります。
パーツIKを使用してアニメーション調整を行われる場合は、

  • パーツIKを使用してアニメーション調整後にスケールを-1して左右反転をおこなう
  • 左右反転した参照イメージを準備していただき、参照セルを変更してから、アニメーション調整をおこなう

……の、どちらかの方法でおこなっていただくようお願いします。

パーツIK(インバースキネマティクス)のハンドルに

IKを使用する際に、NULLパーツをハンドルとして設置し、動きの制御を行います。

IK02レイアウトウィンドウ上部にあるIK01アイコンをクリックする事で、下の階層からいくつ目までの親子関係のパーツに影響するかを設定します。

  • 上腕
  • 右腕
  • NULLパーツ(IKのハンドル用)

というパーツの構成で、「右腕」と「上腕」を連動する形で動かしたいけれど、「体」は動かしたくない場合は、「IK影響範囲のリンク数」を「2」に設定します。(ハンドルとなるNULLパーツは換算しません)

NULLパーツを利用して汎用効果を作成する

スケール、座標移動を入れたNULLパーツを準備し、その子パーツとして、キャラクターのパーツを設定することで、NULLパーツに属する子パーツ全体に効果をかけることができます。

X・Yスケールを使ってズームイン・ズームアウトといったカメラ的な効果や、座標移動を使用してダメージを受けたときの振動などをNULLパーツで作成しておくと、さまざまなアニメーションに簡単に効果をつけることができ、大変便利です。

ただし、NULLパーツにはカラーブレンドや頂点変形は設定できないため、それらのアトリビュートを使用する効果をNULLパーツで作成することはできません。

ズームインをするNULLパーツを作成する

例として、ズームインの効果を持つNULLパーツを作成します。

NULLパーツを追加し、X・Yスケールのアトリビュートを、0フレーム目で「1」、最終フレームで「3」に設定します。
null_03

NULLパーツに属する形で子パーツを設定します。

null_04

NULLパーツの子パーツ全体に効果が反映され、ズームインを行うアニメーションが完成します。
ここで作成したNULLパーツを他のアニメーションデータにコピーすることで、どのアニメーションにもズームイン効果を反映することができます。

元アニメーション NULLパーツ追加後
null_zoomin02 null_zoomin

スケールの適用範囲をNULLパーツで制御する

OPTPiX SpriteStudio 5では「X/Yスケール」アトリビュートの継承を無効にすることができません。
親パーツと子パーツの間にNULLパーツを挟むことで、「X/Yスケール」の適用範囲を制御することができます。

例えば、以下のような状況の場合……

  • 親パーツ:座標とスケールのキーが設定されている
    • 子パーツA親の座標・スケールを適用したい
    • 子パーツB親の座標は適用したいが、スケールを適用したくない

子パーツBに親のスケールを適用したくないので、以下のように、親パーツが持っている「座標」と「スケール」を分離することで制御を行います。

  • NULLパーツ:座標を設定する
    • 親パーツ:スケールを設定する
      • 子パーツA:親のスケールが適用される
    • 子パーツB:座標設定のみ継承される

dont_affect_01a

【Ver.6】ローカルスケールを使用する

SpriteStudio Ver.6では、新たに追加されたアトリビュート「ローカルスケール」を使用することで同様の制御が行なえます。
詳しくは以下のページをご覧ください。

フォントの表示エリアを定義する

メッセージ等、フォントの表示エリアを定義したい場合、NULLパーツを活用します。

  1. NULLパーツを作成します。
  2. アトリビュートウィンドウの「パーツ情報」で、「パーツ種別」をNULLパーツから通常パーツに変更します。
  3. 空の通常パーツが完成します。
  4. 空のパーツのサイズをスケールで変更し、フォントの表示エリアを指定します。
    下図の場合、赤い四角形がフォントの表示エリアとなります。
  5. 指定した表示エリアにプログラム制御でテキストを描画します。

関連ページ