前書き
自分が武器を作っていて最初につまずいたのが、キャラクタが武器を持つときのポジションでした。キャラクタ自体には「WeaponAttachment」という武器を持たせるための場所が設定されているのですが、Weaponクラスにも同様に「Position」というパラメータが存在します。どちらもキャラクタに武器を持たせるときに位置を決めるパラメータになってきますが、双方がどういった意味を持っているか理解していないと自分の思っていた通りにキャラクタに武器を持たせることができないので今回はTopDown Engineでキャラクタに武器を持たせるときのポジションについて紹介していこうと思います。
いつものごとく、DemoにあるMinimalSandbox2Dから「MinimalCharacter2D」と「KoalaSword」で作りを見ていきましょう。
前回までの近距離武器の作り方については以下をご覧ください。
キャラクタが持つWeaponAttachmentについて
キャラクタが武器を持つ位置として「WeaponAttachment」というオブジェクトがあります。
(見えづらいので印をつけてみました。MinimalCharacter2Dの場合は以下の赤丸の位置にWeaponAttachmentがあります。)
このWeaponAttachmentの位置に武器が取り付けられるため実質、WeaponAttachmentの位置が武器の位置となります。
Weaponが持つPositionについて
Weaponクラスのパラメータとして「Position」というパラメータがあります。こちらも武器の位置を設定するためのパラメータになります。
パラメータの説明を見てみると分かりますが、Positionの中にある「WeaponAttachmentOffset」は「前述のWeaponAttachmentに対して適用されるオフセット」になります。以下の例はKoalaSwordのMeleeWeaponのパラメータになります。
それぞれのパラメータを変更した時の変化について
「WeaponAttachment」とWeaponクラスの「Position」について簡単に紹介しましたが、それぞれの値を実際に変更した時の動きを簡単に説明していきたいと思います。
「MinimalCharacter2D」と「KoalaSword」の場合
「MinimalCharacter2D」と「KoalaSword」のWeaponAttachmentやWeaponのPositionがデフォルトの場合だと以下の動画のように、キャラクタと隣り合うようにKoalaSwordが設定されます。
WeaponAttachmentの位置を変える場合
例えば、以下のようにWeaponAttachmentの位置をキャラクタの中心から右側に変更するとします。
その場合、武器を持たせてみると以下のようにWeaponAttachmentを起点に武器が設定されるようになります。
ここで問題となるのが、WeaponAttachmentを起点に武器が設定されるため、キャラクタの向きが反対になってもWeaponAttachmentの位置は変わらないという点です。どういうことかというと、以下の動画を確認していただくと分かるのですが、WeaponAttachmentをキャラクタの右側に置いた状態で動かしてみると、キャラクタが左を向いたとき、右を向いたとき、どちらもWeaponAttachmentはキャラクタモデルの右側によっているため、武器もどちらの向きを向いたとしても右側に寄っていることが分かります。
そのため、WeaponAttachmentをキャラクタに設定する場合は「キャラクタの中心位置に置く」ことをお勧めします。
WeaponクラスのPositionを変える場合
KoalaSwordのMeleeWeaponのWeaponAttachmentOffsetを分かりやすいように“1”に設定した状態で動かしてみます。
動きが分かりやすいようにKoalaSwordのSpriteRendererは削除した状態です。キャラクタの振り向いた向きに向かって矢印の中心が移動していることが分かります。この中心位置は先ほど設定したMelee WeaponのWeaponAttachmentOffsetが影響しています。
WeaponAttachmentOffsetに値を設定することでキャラクタの向きに応じたオフセットを設定できることが分かります。
武器の位置調整をするにはどうすればいいのか?
キャラクタの武器の位置を調整したい場合は簡単に以下の方法でいいかなと思います。
- キャラクタの中心になるようにWeaponAttachmentのオブジェクトを配置する
- WeaponクラスのWeaponAttachmentOffsetの値を調整する
1.でキャラクタの中心からずれた位置にWeaponAttachmentのオブジェクトを配置してしまうと左右にキャラクタが向いたときに武器がずれた位置に止まってしまいます。まずは1.でキャラクタの中心に武器を置いて、ちょっとずつWeaponAttachmentOffsetの値を調整して適切な位置に武器を設定してあげる方法になるかなと思います。
まとめ
今回は近距離武器の作り方その4~ポジション~について紹介しました。
TopDown Engineに慣れてないとWeaponAttachmentとWeaponクラスのPositionの関係性が分かりづらいと思いますが、実際に動かしてみると違いが分かりやすいかなと思います。
今回は見た目で分かりやすいようにWeaponAttachmentをキャラクタの中心に置きましたが、ほかのテクニックとして「キャラクタモデルの下にWeaponAttachmentを配置してモデルの動き合わせて武器の位置を変える」といった方法もできます。やり方はいろいろあると思うので作成するキャラクタに合わせて修正してみてください。
コメント