キャラクタ制御の登録

目次

  概要
  考察:ユニティちゃんの動かし方
  参考:自動同期通信スクリプトで用いる「Key Assign」の設定について
  移動制御パラメータの登録(上方向入力で前進)
  移動制御パラメータの登録(移動系・その他)
  アニメーション制御パラメータの登録(移動系)
  アニメーション制御パラメータの登録(その他)
  (Unity2018.3以降)アニメーション制御パラメータを保存する
  単独クライアントで動かしてみる


概要

「自動同期通信スクリプト」に、キャラクタのキー入力制御を登録する

  先ほどの動作確認では、プレイヤーキャラクタが操作できません。
  MUN で用意されている「キャラクタ制御スクリプト」に、キャラクタのキー入力制御を登録する必要があります。

  キー入力による操作については、例えば「ユニティちゃん 3Dモデルデータ」には、同様のスクリプトとして
  「Unity Chan Control Script With Rgid Body」というスクリプトが同梱で用意されていますが、
  これはあくまで「ユニティちゃん 3Dモデルデータ専用」のスクリプトです。
  他のモデルデータなどに活用する場合、プログラムを追加・修正する手間が出てしまいます。

  MUNで用意した「自動同期制御スクリプト」は、あらゆるキャラクターコンテンツにも対応できるように、
  汎用のスクリプトとして作成されています。
  この部分についても、自作コンテンツを含めて「ノンプログラミング」で開発することが可能です。


考察:ユニティちゃんの動かし方

前置き

  この部分は、今回の動作サンプルとして使用している「ユニティちゃん3Dモデルデータ」に関して
  「どのようにキャラクタ制御を行なえばよいか?」という考察です。

  記述する内容は予備知識程度に留めておくもので、むしろ単に「ノンプログラミング開発の手順だけ知りたい」のであれば、
  次の 参考:自動同期通信スクリプトで用いる「Key Assign」の設定について に進んでいただいて構いません。
    ※ このページに書かれている内容で「なぜこんな制御をユニティちゃんにさせているのだろう?」と疑問に思うようでしたら、
      この考察を読み返してみると良いかも知れません。

本来のLocomotion シーンの動作から、ユニティちゃんの動かし方を探る

  本来のLocomotionシーン(Assets/UnityChan/Scenes/Locomotion.unity)を起動すると、
  カーソルキー等でユニティちゃんを操作できます。
  操作方法の説明については、画面右上のパネルに、以下のように表示されています。
  パネルには以下のようなことが記述されています。
・カーソル上キー:前進
・カーソル下キー:後退
・カーソル左キー:左回転
・カーソル右キー:右回転
・スペースキー:走っているときに「ジャンプ」、止まっているときに「休む」動作
・左Ctrlキー:前面カメラ
・Altキー:仰角カメラ
  今回、MUNで用意されている汎用の自動同期通信制御スクリプトも、出来うる限りこれに準じます。

unitychan_dynamic_locomotionのアニメーションはどう制御されているのか

  今回プレハブに追加した unitychan_dynamic_locomotion のアニメーション制御について触れてみます。
  アニメーション情報は Assets/UnityChan/Animators/UnityChanLocomotions.controller に収められています。
  (当該データには Face のレイヤーがありますが、これは無視して、Base Layer のレイヤーのみ参照します。)
  アニメーションの状態遷移としては以下のようになっています。
■ アニメーション開始時
   ・ 無条件で Idle に遷移
■ Idle中
   ・ Speed の値が   0.1 を上回ったら Locomotion に遷移
   ・ Speed の値が -0.1 を下回ったら WalkBack に遷移
   ・ Rest フラグが立ったら Rest に遷移
■ Rest 中
   ・ Speed の値が   0.1 を上回ったら Locomotion に遷移
   ・ Speed の値が -0.1 を下回ったら WalkBack に遷移
   ・ モーション終了後 Idle に遷移
■ WalkBack 中
   ・ Speed の値が -0.1 を上回ったら Idle に遷移
■ Locomotion 中
   ・ Speed の値によって歩く・走るを変える
   ・ Direction の値によって左右に振り向く
   ・ Speed の値が 0.1 を下回ったら Idle に遷移
   ・ Jump フラグが立ったら Jump に遷移
■ Jump 中
   ・ モーション終了後 Locomotion に遷移
  上述のキー操作と合わせて考えると、キー操作によるアニメーション制御は以下のように行えば良いことが分析できます。
・カーソル上キー:Speed を 1.0 にする。
・カーソル下キー:Speed を -1.0 にする。
・カーソル左キー:Direction を -1.0 にする。
・カーソル右キー:Direction を 1.0 にする。
・スペースキー:走っているときに Jump フラグを ON に、止まっているときに Rest フラグを ON にする。
  また、JumpHeight ならびに GravityControl によるリアリスティックなジャンプ挙動については、
  キャラクタ制御スクリプト上では不要ですので、無視するものとします。


参考:自動同期通信スクリプトで用いる「Key Assign」の設定について

前置き

  この部分は、これより制御する「自動同期通信スクリプト」において、キャラクタを操作する上での「Key Assign」の項目に関しての説明です。
  キー設定を行う上での参考にしてください。

「Key Assign」の設定=Unityのキーコンフィグ設定

  自動同期通信スクリプト上で「Key Assign」という項目があります。
  これは Unity のキーコンフィグ設定に基づいたものを使用しています。

  Unity のキーコンフィグについては、Unity のメニューから Edit > Project Settings > Input を選択することで、確認することができます。

  確認は InspectorView で行ないます。
  例えば "Horizontal" の項目をクリックすると、Negative に left , Positive に right が割り当てられていることが分かります。


移動制御パラメータの登録(上方向入力で前進)

制御パラメータ入力欄を作成する

  自動同期通信スクリプトは、Inspectorに登録された「キャラクタ制御パラメータ」により、キャラクタに様々な制御を行ないます。
  したがって、「何かをさせる」のに、パラメータ入力が必須です。
  手始めに、「上方向入力(カーソル上キーなど)により、前進する」制御パラメータを組んでみましょう。

  Assets/Resources/に保存していた unitychan_dynamic_locomotion を選択します。
  Inspector に「Open Prefab」のボタンしか表示されていない場合、このボタンを押します。
  (「Open Prefab」のボタンが表示されていない場合には、すでに開いている状態ですので問題ありません)
  Inspector (の一番下のほう)に表示されている、Monobit Player Move Templete 内の、
  [ Add Key And Anim Settings List Column ] ボタンを1回だけ押してみます。
似たようなデザインのボタンで、MonobitView の [ Add Observed Component List Column ] があります。
ボタンの押し間違いに御注意ください。
  ボタンを押すと、以下のように制御パラメータの入力インタフェースが現れます。
    ※ 押しすぎた場合、右下の [ Remove ] ボタンを押して調節してください。

「上方向入力」で「前進する」制御パラメータの入力

  「上方向入力」を示すために、以下の2つの要素を設定します。
・ Key Assign に「Vertical」(上下方向入力)を設定する。
・ Button Action に「Positive」(+方向=上方向)を設定する。
  また「前進する」を示すために、以下の2つの要素を設定します。
・ Action type を「Move」(移動)に設定する。(=デフォルトのまま)
・ Position Increase の Z 値 を「0.1」(前方向に移動)にする。


移動制御パラメータの登録(その他)

「下方向入力」で「後退する」制御パラメータの入力

  ここから物量が多いので一気に設定していきましょう。
  「下方向入力」で「後退する」制御パラメータについて、以下の手順で追加します。
・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Vertical」(上下方向入力)を設定する。
・ Button Action に「Negative」(-方向=下方向)を設定する。
・ Action type を「Move」(移動)に設定する。(=デフォルトのまま)
・ Position Increase の Z 値 を「-0.01」(後ろ方向に移動)にする。

「右方向入力」で「右回転する」制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Horizontal」(左右方向入力)を設定する。
・ Button Action に「Positive」(+方向=右方向)を設定する。
・ Action type を「Rotate」(回転)に設定する。
・ Rotation Increase の Y 値 を「5」(右方向に回転)にする。

「左方向入力」で「左回転する」制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Horizontal」(左右方向入力)を設定する。
・ Button Action に「Negative」(-方向=左方向)を設定する。
・ Action type を「Rotate」(回転)に設定する。
・ Rotation Increase の Y 値 を「-5」(左方向に回転)にする。


アニメーション制御パラメータの登録(移動系)

「上方向入力」で「走る」アニメーション制御パラメータの入力

  アニメーションパラメータの登録についても、移動制御パラメータと同様に行います。
・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Vertical」(上下方向入力)を設定する。
・ Button Action に「Positive」(+方向=上方向)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Speed」に設定する。
・ Anim Value[Speed] を「1」に設定する。

「下方向入力」で「後退する」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Vertical」(上下方向入力)を設定する。
・ Button Action に「Negative」(-方向=下方向)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Speed」に設定する。
・ Anim Value[Speed] を「-1」に設定する。

「右方向入力」で「右回転する」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Horizontal」(左右方向入力)を設定する。
・ Button Action に「Positive」(+方向=右方向)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Direction」に設定する。
・ Anim Value[Direction] を「1」に設定する。

「左方向入力」で「左回転する」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Horizontal」(左右方向入力)を設定する。
・ Button Action に「Negative」(-方向=左方向)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Direction」に設定する。
・ Anim Value[Direction] を「-1」に設定する。


アニメーション制御パラメータの登録(その他)


  その他、「ジャンプ」「休む」アニメーションについても、制御パラメータに追加してみましょう。

  「ジャンプ」「休む」アニメーションはフラグ管理です。
  フラグ管理のON/OFFを設定しなければならないため、少々厄介です。

「スペースキー」で「ジャンプする」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Jump」(Jumpに割り当てられているキー(通常はスペースキー)の入力)を設定する。
・ Button Action に「Down」(押した瞬間)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Jump」に設定する。
・ Anim Flag[Jump] のチェックボックスを「ON」に設定する。

「スペースキー」を離したら「ジャンプさせない」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Jump」(Jumpに割り当てられているキー(通常はスペースキー)の入力)を設定する。
・ Button Action に「Up」(離した瞬間)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Jump」に設定する。
・ Anim Flag[Jump] のチェックボックスを「OFF」に設定する。

「左CTRLキー」で「休む」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Fire1」(Fire1に割り当てられているキー(通常は左CTRLキー)の入力)を設定する。
・ Button Action に「Down」(押した瞬間)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Rest」に設定する。
・ Anim Flag[Rest] のチェックボックスを「ON」に設定する。

「左CTRLキー」を離したら「休ませない」アニメーション制御パラメータの入力

・ [ Add Key And Anim Settings List Column ] ボタンを押す。
・ Key Assign に「Fire1」(Fire1に割り当てられているキー(通常は左CTRLキー)の入力)を設定する。
・ Button Action に「Up」(離した瞬間)を設定する。
・ Action type を「Change Anim Param」(アニメーションパラメータの変更)に設定する。
・ Select Anim Param を「Rest」に設定する。
・ Anim Flag[Rest] のチェックボックスを「OFF」に設定する。


(Unity2018.3以降)アニメーション制御パラメータを保存する

Unity2018.3 より、プレハブのパラメータ変更に伴う自動保存がなされないので、手動で保存する

  ここまでの変更結果について、Unity2018.2 までのバージョンの場合自動保存されるのですが、
  Unity2018.3 以降、パラメータ変更に伴う自動保存がなされないため、手動で保存します。
Unity2018.2 以前をご使用の場合、この項目は無視して構いません。
次の 単独クライアントで動かしてみる に進んでください。

  まず、Unityのデフォルト設定では「プレハブの自動保存」が有効になっているため、それを無効化させます。
  Unity2018.3 以降であれば、エディタのシーンビューの表示領域内に「Auto Save」のチェックボックスがありますので、
  それを探してください。
  「Auto Save」のチェックボックスを見つけたら、一旦、このチェックボックスを OFF にして、「Save」ボタンが表示される状態にしてください。
  (Saveボタンは、まだ押せない状態ですが、このままで構いません)
  続けて、unitychan_dynamic_locomotion のプレハブの Inspector にある「Transform」のうち、
  Position の X 値に「1」を入力して変更します。
  変更したら、Position の X 値に「0」を入力して元に戻します。
  この状態で、プレハブの状態に対する「Save」ボタンが押せるようになりますので、押してください。
  「Save」ボタンを押し、ボタンがグレーアウトしたのを確認して、Auto Save を有効に戻します。
  以下の状態に戻して完了です。


単独クライアントで動かしてみる

実行ボタンを押し、動作を確認する

  前回と同様に、実行ボタンをおして動作を確認してみましょう。
  以下のキー操作により、キャラクタの操作が出来ます。
・カーソルキー上:前進
・カーソルキー下:後退
・カーソルキー左:左回転
・カーソルキー右:右回転
・スペースキー:ジャンプ(前進中のみ有効)
・左CTRLキー:休む
  動作確認が終わったら、実行ボタンの解除をしておきましょう。