キャラクタ制御の組み込み

目次

  概要
  考察:ユニティちゃんの動かし方
  移動制御パラメータの登録(上入力で前進)
  移動制御パラメータの登録(下入力で後退)
  移動制御パラメータの登録(右入力で右回転)
  移動制御パラメータの登録(左入力で左回転)
  アニメーション制御パラメータの登録(上入力で前進)
  アニメーション制御パラメータの登録(下入力で後退)
  アニメーション制御パラメータの登録(右入力で右回転)
  アニメーション制御パラメータの登録(左入力で左回転)
  アニメーション制御パラメータの登録(ジャンプ)
  アニメーション制御パラメータの登録(休憩)


概要

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

  先ほど設定した 自動同期通信スクリプトの登録 だけでは、プレイヤーキャラクタを操作することはできません。
  ここから、プレイヤーキャラクタのキー入力制御を登録する必要があります。

  MUNで用意している自動同期制御スクリプトは、
  あらゆるキャラクターコンテンツを操作できるように、専用の操作UIを用意しています。
  この部分についても「ノンプログラミング」で開発していきましょう。


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

前置き

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

  記述する内容は予備知識程度に留めておくもので、むしろ単に「ノンプログラミング開発の手順だけ知りたい」のであれば、
  次の 移動制御パラメータの登録(上方向入力で前進) に進んでいただいて構いません。
    ※ このページに書かれている内容で「なぜこんな制御をユニティちゃんにさせているのだろう?」と疑問に思うようでしたら、
      この考察を読み返してみると良いかも知れません。

本来の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 によるリアリスティックなジャンプ挙動については、
  キャラクタ制御スクリプト上では不要ですので、無視するものとします。


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

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

  自動同期通信スクリプトは、Inspectorに登録された「キャラクタ制御パラメータ」により、キャラクタに様々な制御を行ないます。
  したがって、「何かをさせる」ためにはパラメータ入力が必須です。

  手始めに、「上方向入力(カーソル上キーなど)により、前進する」制御パラメータを組んでみましょう。

  Hierarchy に表示されている「unitychan_dynamic_locomotion」を選択してください。
  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 ] ボタンを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 ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
・ [ 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 ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
・ [ 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 ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
・ [ 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 ] ボタンを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 ] ボタンを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 ] ボタンを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」に設定する。


アニメーション制御パラメータの登録(ジャンプ)

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

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

  [ Add Key And Anim Settings List Column ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
  「ジャンプする」アニメーションはフラグ管理のため、上述までとは少々勝手が異なりますが、
  入力手順自体は一緒です。
・ [ 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 ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
・ [ 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 ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
・ [ 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 ] ボタンを1回押し、
  続けて以下の項目を順に追加します。
・ [ 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」に設定する。