▲前のページへ
次のページへ▼

プレイヤーアクションスクリプトの作成


【目次】
キャラクタエディタを開く
ローカルメモリの編集
初期設定(init)状態の作成
待機(idle)状態の作成
割り込み処理の作成
割り込み処理からの派生ステートの作成
プレイヤーアクションスクリプトを出力する


キャラクタエディタを開く

 プレイヤー操作によってキャラクタにアクション(アニメーション)をさせるためには、
 スクリプトによるアニメーション制御が必要になります。

 ここからキャラクタエディタによるプレイヤーアクションスクリプトの作成に入りましょう。

■ キャラクタエディタを開く
  Unity のメニューから MoEngine > CharacterEditor でキャラクタエディタが起動します。
  

  起動すると、以下のような画面が開きますので、メニューから [保存] を選びます。
  

  保存する場所とファイル名は以下を指定してください。
    保存先の場所: C:/MOE_CEDEC_DEMO/MOE_CEDEC/Master
    保存ファイル名 :player_root.xml
  


ローカルメモリの編集

 モノビットMOエンジン v1.1 から「ローカルメモリ」の編集が出来るようになりました。
 「ローカルメモリ」は、キャラクタ間で共有したい変数がある場合などに定義が必要です。

  ※ 「ローカルメモリ」を使うことで、例えば
      「ダメージを受けたときに、[自分の体力値] を [相手の攻撃力] の分だけ差し引く(=自分と相手のパラメータが必要)
     ということが簡単に出来るようになります。

■ ローカルメモリの編集画面を開く
  では、ローカルメモリの編集画面を開きましょう。CharacterEditor 画面の [ローカルメモリ] ボタンをクリックします。
  

  [ローカルメモリ] ボタンをクリックすると、以下のような画面が現れます。
  

■ 共通データ「HP(体力値)」「ATK(攻撃力値)」を追加する
  ではここで、ローカルメモリに各キャラクタ間で共通で使用するデータとして「HP(体力値)」と「ATK(攻撃力値)」の
  2つの変数を用意することにしましょう。
  LocalMemory ウィンドウ内の「-----共通データ-----」の下にある[データ追加] のボタンを2回クリックしてください。
  

  すると、共通データの項目欄に2件の新規レコードが作成されます。
  

  追加されたレコードに対し、以下の順番で変数を定義しましょう。
    1件目 → 名前:HP , 型 Int
    2件目 → 名前:ATK , 型 Int
  

■ 共通データを保存する
  追加した共通データを保存します。LocalMemory ウィンドウ内の [共通データを保存] をクリックしてください。
  

  保存し終えたら、LocalMemory ウィンドウの右上の×ボタンをクリックして閉じてください。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  


初期設定(init)状態の作成

 今度はキャラクタスクリプトの作成に移ります。
 まずは、キャラクタスクリプトの初期値を設定する「初期設定」の状態を作りましょう。

■ init ステートラベルの作成
  以下の手順で init ステートラベルを作成してください。
   1) CharacterEditer 画面の任意の場所を右クリックし、ポップアップメニューを表示させます。
    

   2) ポップアップメニューから [システム処理] > [ステートラベル] を順にクリックします。
    

   3) ステートラベルのボックスが現れますので、名前入力欄に init と記述します。
    

■ 開始ラベル と init ステートラベル を連結させる
  [開始] 直後に init を実行させるため、以下の手順で [開始] ラベルの Out 端子 と [Init] ラベルの In 端子とを繋げます。
   
   
   
   

■ init ステートラベルの中身を作成する
  続けて、init ステートラベルの中身を作成していきます。
   1) [init] ステートラベル内の [エディタを開く] ボタンをクリックします。
    

   2) するとCharacterEditor とは別に、新規に init ステートウィンドウが立ち上がります。
    

   3) init ステートウィンドウには以下の手順でノードを追加していきます。
    ※ 内容として端的に説明すると、HPに100、ATKに10、死亡フラグおよび攻撃フラグをOFFにするという処理になります。

      ① idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [変数の設定] を選択し、
        開始の Out 端子と 自身の In 端子を繋ぎます。
         

      ② idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [定数] を選択し、
        型に「Int」、値に「100」を設定し、① の In 側 Value 端子と 自身の Out 端子を繋ぎます。
         

      ③ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [ローカルメモリ] を選択し、
        型に「Int」、名前に「HP」を設定し、① の Out 側 Value 端子と 自身の In 端子を繋ぎます。
         

      ④ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [変数の設定] を選択し、
        ① の Out 端子と 自身の In 端子を繋ぎます。
         

      ⑤ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [定数] を選択し、
        型に「Int」、値に「25」を設定し、④ の In 側 Value 端子と 自身の Out 端子を繋ぎます。
         

      ⑥ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [ローカルメモリ] を選択し、
        型に「Int」、名前に「ATK」を設定し、④ の Out 側 Value 端子と 自身の In 端子を繋ぎます。
         

      ⑦ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [変数の設定] を選択し、
        ④ の Out 端子と 自身の In 端子を繋ぎます。
         

      ⑧ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [定数] を選択し、
        型に「Int」、値に「0」を設定し、⑦ の In 側 Value 端子と 自身の Out 端子を繋ぎます。
         

      ⑨ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [変数] を選択し、
        型に「Int」、名前に「DeadFlag」を設定し、⑦ の Out 側 Value 端子と 自身の In 端子を繋ぎます。
         

      ⑩ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [変数の設定] を選択し、
        ⑦ の Out 端子と 自身の In 端子を繋ぎます。同時に、⑧ の Out 端子と自身の In 側 Value 端子とを繋ぎます。
         

      ⑪ idle ステートウィンドウの任意の場所を右クリックし、ポップアップメニューから [変数・定数] > [変数] を選択し、
        型に「Int」、名前に「AttackFlag」を設定し、⑩ の Out 側 Value 端子と 自身の In 端子を繋ぎます。
         

■ init ステートウィンドウを閉じる
  init ステートの中身は上記だけですので、組み込み終わったら 右上の×ボタンを押して閉じます。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  

■ CharacterEditor の内容を上書き保存しておく
  ここまでの操作で、CharacterEditer の内容を上書き保存しておきましょう。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  


待機(idle)状態の作成

 キャラクタスクリプトの基本姿勢となる「待機」の状態を作ります。

■ idle ステートラベルの作成
  CharacterEditor 上で右クリックし、メニューから [システム処理] > [ステートラベル] を選択し、
  ステートラベル名を「idle」とした上で、init ステートの Out 端子と、自身の In 端子を連結させてください。

  先ほどまでの手順と同じような手続きをとれば、上記の内容で以下のようになります。
  

  同様の手順で、idleの Out 端子と In 端子を連結させてみましょう。
  (idle の Out 端子を左クリックし、マウスムーブで線が延びることを確認した後、同じ idle の In 端子を左クリック)

  これで idle ステートのループが完成します。
  

■ idle ステートラベルの中身を作成する
  続けて、idle ステートラベルの [エディタを開く] ボタンをクリックし、idle ステートラベルウィンドウを開いた後、
  idle ステートラベルウィンドウ に対して以下の内容を組み込んでください。
    ※ 内容として端的に説明すると、「100ミリ秒待ち続ける」をループ=何もしないという処理になります。

   ① 右クリックメニューから [システム処理] > [待機] を選択し、入力欄には 100 を設定し、[ 開始 ] の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、idle ステートウィンドウ内が以下のようになっていれば問題ありません。
  

■ idle ステートウィンドウを閉じる
  idle ステートの中身は上記だけですので、組み込み終わったら 右上の×ボタンを押して閉じます。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  

■ CharacterEditor の内容を上書き保存しておく
  ここまでの操作で、CharacterEditer の内容を上書き保存しておきましょう。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  


割り込み処理の作成

 キャラクタ操作中に何らかのイベント(ダメージを受けた、死亡した、何らかの操作を行なった、など)が行なわれた場合、
 「割り込み」という制御が働きます。今回キャラクタを「操作する」というイベントに応じてアニメーションを切り替える
 必要がありますので、この割り込み処理を記述していきましょう。

■ 割り込み処理を追加する
  以下の手順で、CharacterEditor 上に割り込み処理を追加してください。
    ※ 内容として端的に説明すると、死亡したときには end を、ダメージを受けたら damage_start を、
      入力操作があったら input_select を、それぞれ実行する
という処理になります。

    ① 右クリックメニューから [システム処理] > [割り込み処理] を選択し、割り込み処理名を「Message」とする。
    ② 右クリックメニューから [変数・定数] > [比較演算] を選択し、比較演算を「Arg1 == Arg2」にして、① の Out 端子と自身の In 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、名前を「DeadFlag」にして、② の Arg1 端子と自身の Out 端子を繋ぐ。
    ④ 右クリックメニューから [変数・定数] > [定数] を選択し、型を「Int」、値を「1」にして、② の Arg2 端子と自身の Out 端子を繋ぐ。
    ⑤ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「end」にして、② の True 端子と自身の In 端子を繋ぐ。
    ⑥ 右クリックメニューから [変数・定数] > [比較演算] を選択し、比較演算を「Arg1 == Arg2」にして、② の False 端子と自身の In 端子を繋ぐ。
    ⑦ 右クリックメニューから [変数・定数] > [システム変数] を選択し、名前を「Interrupt Type」にして、⑥ の Arg1 端子と自身の Out 端子を繋ぐ。
    ⑧ 右クリックメニューから [変数・定数] > [システム定数] を選択し、名前を「DAMAGE」にして、⑥ の Arg2 端子と自身の Out 端子を繋ぐ。
    ⑨ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「damage_start」にして、⑥ の True 端子と自身の In 端子を繋ぐ。
    ⑩ 右クリックメニューから [変数・定数] > [比較演算] を選択し、比較演算を「Arg1 == Arg2」にして、⑥ の False 端子と自身の In 端子を繋ぐ。
       同時に、⑦ の Out 端子と自身の Arg1 端子とを繋ぐ。
    ⑪ 右クリックメニューから [変数・定数] > [システム定数] を選択し、システム定数名を「INPUT」にして、⑩ の Arg2 端子と自身の Out 端子を繋ぐ。
    ⑫ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「input_select」にして、⑩ の True 端子と自身の In 端子を繋ぐ。
    ⑬ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、⑩ の False 端子と自身の In 端子を繋ぐ。

  上記工程の結果、CharacterEditor ウィンドウが以下のようになっていれば問題ありません。
  

■ end ステート処理を追加する
  続けて、CharacterEditor 上の ⑤ として加えた「end ステート」の処理内容について記述します。
  end ステートの [エディタを開く] ボタンをクリックして、end ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、死んでいる間、割り込み処理(入力制御など)を何もさせないという処理になります。

    ① 右クリックメニューから [システム処理] > [割り込み終了] を選択し、[開始] の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、end ステートウィンドウが以下のようになっていれば問題ありません。
  

■ damage_start ステート処理を追加する
  続けて、CharacterEditor 上の ⑨ として加えた「damage_start ステート」の処理内容について記述します。
  damage_start ステートの [エディタを開く] ボタンをクリックして、damage_start ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、自分の体力値から、相手の攻撃力値を引くという処理になります。

    ① 右クリックメニューから [共通処理] > [ユニットパラメータ取得] を選択し、型に「Int」、ユニット名に「COMMON」、パラメータ名に「ATK」を設定し、
      [開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [システム変数] を選択し、変数名に「Fact Unit Id」を設定し、① の UnitId 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [算術演算] を選択し、計算式に「Value -= Arg1」を設定し、① の Out 端子と自身の In 端子を繋ぐ。
    ④ 右クリックメニューから [変数・定数] > [戻り値] を選択し、③ の Arg1 端子と自身の Out 端子を繋ぐ。
    ⑤ 右クリックメニューから [変数・定数] > [ローカルメモリ] を選択し、型に「Int」、名前に「HP」を設定し、③ の Value 端子と自身の In 端子を繋ぐ。
    ⑥ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、ラベル名に「damage_wait」を設定し、③ の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、damage_start ステートウィンドウが以下のようになっていれば問題ありません。
  

■ input_select ステート処理を追加する
  続けて、CharacterEditor 上の ⑫ として加えた「input_select ステート」の処理内容について記述します。
  input_select の [エディタを開く] ボタンをクリックして、input_selectステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、マウスムーブ(スライド)で move_start を、マウスクリック(タップ)attack_startを実行するという処理になります。

    ① 右クリックメニューから [変数・定数] > [比較演算] を選択し、比較演算を「Arg1 and Arg2」にして、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [システム変数] を選択し、システム変数名を「Input Flag」とし、① の Arg1 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [システム定数] を選択し、システム定数名を「MOVE」とし、① の Arg2 端子と自身の Out 端子を繋ぐ。
    ④ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「move_start」とし、① の True 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [変数・定数] > [比較演算] を選択し、比較演算を「Arg1 and Arg2」にして、① の False 端子と自身の In 端子を繋ぐ。
      同時に ② の Out 端子と自身の Arg1 端子を繋ぐ。
    ⑥ 右クリックメニューから [変数・定数] > [システム定数] を選択し、システム定数名を「TAP」とし、⑤ の Arg2 端子と自身の Out 端子を繋ぐ。
    ⑦ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「attack_start」とし、⑤ の True 端子と自身の In 端子を繋ぐ。
    ⑧ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、⑤ の False 端子と自身の In 端子を繋ぐ。

  上記工程の結果、input_select ステートウィンドウが以下のようになっていれば問題ありません。
  

■ move_start ステート処理を追加する
  更に、input_select ステートウィンドウ内に含まれている「move_start ステート」の処理内容について記述します。
  move_start の [エディタを開く] ボタンをクリックして、move_start ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、AttackFlag をOFF にして、RunFlagをTRUEにする=走らせる、のち move_waitステートを実行という処理になります。

    ① 右クリックメニューから [変数・定数] > [変数の設定] を選択し、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [定数] を選択し、型に「Int」、数値に「0」を設定し、① の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [変数] を選択し、型に「Int」、名前に「AttackFlag」を設定し、① の Out 側 Value 端子と自身の In 端子を繋ぐ。
    ④ 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素をBool、パラメータ名を RunFlag 、
      パラメータのチェックボックスを ON にし、① の Out 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、終了ラベル欄に move_wait と記述し、④ の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、move_start ステートウィンドウが以下のようになっていれば問題ありません。
  

■ attack_start ステート処理を追加する
  更に、input_select ステートウィンドウ内に含まれている「attack_start ステート」の処理内容について記述します。
  attack_start の [エディタを開く] ボタンをクリックして、attack_start ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、AttackFlag が OFF の場合、AttackFlag を ON にして、AttackTriggerをTRUEにする=攻撃モーション開始、
      攻撃コリジョン(サブコリジョン)を生成する、のち attack_waitステートを実行する
という処理になります。

    ① 右クリックメニューから [変数・定数] > [比較演算] を選択し、比較演算を「Arg1 == Arg2」にして、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、名前を「AttackFlag」にして、① の Arg1 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [定数] を選択し、型を「Int」、値を「1」にして、① の Arg2 端子と自身の Out 端子を繋ぐ。
    ④ 右クリックメニューから [システム処理] > [ブランチ実行] を選択し、実行ラベル欄に「end」と記述し、① の True 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [変数・定数] > [変数の設定] を選択し、① の False 端子と自身の In 端子を繋ぐ。
      同時に、③ の Out 端子と自身の In 側 Value 端子を繋ぐ。
    ⑥ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、名前を「AttackFlag」にして、⑤ の Out 側 Value 端子と自身の In 端子を繋ぐ。
    ⑦ 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素をBool、パラメータ名を RunFlag 、
      パラメータのチェックボックスを OFF にし、⑤ の Out 端子と自身の In 端子を繋ぐ。
    ⑧ 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素をTrigger、パラメータ名を AttackTriggerにし、
      ⑦の Out 端子と自身の In 端子を繋ぐ。
    ⑨ 右クリックメニューから [ユニット制御] > [サブコリジョン] を選択し、オフセット値に( 0, 0, 0.5 ) を、効果範囲に 1 を、効果時間に 0.5 を設定し、
      ⑧ の Out 端子と自身の In 端子を繋ぐ。
    ⑩ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、終了ラベル欄に attack_wait と記述し、 ⑨ の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、attack_start ステートウィンドウが以下のようになっていれば問題ありません。
  

■ end, damage_start, input_select, move_start, attack_start ステートウィンドウを閉じる
  end, damage_start, input_select, move_start, attack_startステートの中身は上記だけですので、
  組み込み終わったら 右上の×ボタンを押して閉じます。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  

■ CharacterEditor の内容を上書き保存しておく
  ここまでの操作で、CharacterEditer の内容を上書き保存しておきましょう。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  


割り込み処理からの派生ステートの作成

 上述の割り込み処理にて、以下の3つのステートから独立して派生するステートが必要になります。
    ・「move_start」ステート終了後に実行される「move_wait」ステート
    ・「attack_start」ステート終了後に実行される「attack_wait」ステート
    ・「damage_start」ステート終了後に実行される「damage_wait」ステート
 必要がありますので、この割り込み処理を記述していきましょう。

■ 派生ステートを追加する
  以下の手順で、CharacterEditor 上に派生ステートを追加してください。
    ※ 内容として端的に説明すると、「走る」「攻撃する」「ダメージを受ける」モーションを終了したら idle に戻すという処理になります。

    ① 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「move_wait」とし、「Idle」の In 端子と自身の Out端子を繋ぐ。
    ② 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「attack_wait」とし、「Idle」の In 端子と自身の Out端子を繋ぐ。
    ③ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「damage_wait」とし、「Idle」の In 端子と自身の Out端子を繋ぐ。

  上記工程の結果、CharacterEditor が以下のようになっていれば問題ありません。
  

■ move_wait ステート処理を追加する
  続けて、CharacterEditor 上の ① で加えた「move_wait ステート」の処理内容について記述します。
  move_wait の [エディタを開く] ボタンをクリックして、move_waitステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、入力を中断したら、100ミリ秒後にRunFlagをFALSEにしてidleを実行=走るのをやめるという処理になります。

    ① 右クリックメニューから [システム処理] > [待機] を選択し、数値 100 を設定し、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素をBool、
      パラメータ名を RunFlag 、パラメータのチェックボックスを OFF にし、① の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、move_wait ステートウィンドウが以下のようになっていれば問題ありません。
  

■ attack_wait ステート処理を追加する
  更に、CharacterEditor 上の ② で加えた「attack_wait ステート」の処理内容について記述します。
  attack_wait の [エディタを開く] ボタンをクリックして、attack_wait ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、攻撃を中断したら、700ミリ秒後にAttackFlagをOFFにし、idleを実行=攻撃するのをやめるという処理になります。

    ① 右クリックメニューから [システム処理] > [待機] を選択し、数値 700 を設定し、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [変数の設定] を選択し、① の Out 端子と自身の In 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [定数] を選択し、型に「Int」、値に「0」を設定し、② の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ④ 右クリックメニューから [変数・定数] > [変数] を選択し、型に「Int」、名前に「AttackFlag」を設定し、② の Out 側 Value 端子と自身の In 端子を繋ぐ。

  上記工程の結果、attack_wait ステートウィンドウが以下のようになっていれば問題ありません。
  

■ damage_wait ステート処理を追加する
  更に、CharacterEditor の ③ で加えた「damage_wait ステート」の処理内容について記述します。
  damage_wait の [エディタを開く] ボタンをクリックして、damage_wait ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、HPが0以下なら死亡ステートへ、それ以外はダメージモーションを取り、AttackFlagをOFFにするという処理になります。

    ① 右クリックメニューから [変数・定数] > [比較分岐] を選択し、比較演算を「Arg1 <= Arg2」に設定し、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [ローカルメモリ] を選択し、型に「Int」、名前に「HP」を設定し、① の Arg1 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [定数] を選択し、型に「Int」、値に「0」を設定し、① の Arg2 端子と自身の Out 端子を繋ぐ。
    ④ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「dead_start」とし、① の True 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素を「Trigger」、
      パラメータ名を「DamageTrigger」に設定し、① の False 端子と自身の In 端子を繋ぐ。
    ⑥ 右クリックメニューから [システム処理] > [待機] を選択し、数値 300 を設定し、⑤ の Out 端子と自身の In 端子を繋ぐ。
    ⑦ 右クリックメニューから [変数・定数] > [変数の設定] を選択し、⑥ の Out 端子と自身の In 端子を繋ぐ。
    ⑧ 右クリックメニューから [変数・定数] > [定数] を選択し、型に「Int」、値に「0」を設定し、⑦ の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ⑨ 右クリックメニューから [変数・定数] > [変数] を選択し、型に「Int」、名前に「AttackFlag」を設定し、⑦ の Out 側 Value 端子と自身の In 端子を繋ぐ。

  上記工程の結果、damage_wait ステートウィンドウが以下のようになっていれば問題ありません。
  

■ dead_start ステート処理を追加する
  更に、damage_waitステートウィンドウの ④ で加えた「dead_start ステート」の処理内容について記述します。
  dead_start の [エディタを開く] ボタンをクリックして、dead_start ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、死亡フラグを立て、倒れるアニメーションをして、respawn_start を実行するという処理になります。

    ① 右クリックメニューから [変数・定数] > [変数の設定] を選択し、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [定数] を選択し、型に「Int」、値に「1」を設定し、① の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [変数] を選択し、型に「Int」、名前に「DeadFlag」を設定し、① の Out 側 Value 端子と自身の In 端子を繋ぐ。
    ④ 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素をTrigger、
      パラメータ名を DownTrigger に設定し、① の Out 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [システム処理] > [待機] を選択し、数値に「2000」を設定し、④ の Out 端子と自身の In 端子を繋ぐ。
    ⑥ 右クリックメニューから [システム処理] > [ステートラベル] を選択し、ステートラベル名を「respawn_start」とし、⑤ の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、dead_start ステートウィンドウが以下のようになっていれば問題ありません。
  

■ respawn_start ステート処理を追加する
  更に、dead_start ステートウィンドウの ⑥ で加えた「respawn_start ステート」の処理内容について記述します。
  respawn_start の [エディタを開く] ボタンをクリックして、respawn_start ステートウィンドウに以下の手順で処理を加えてください。
    ※ 内容として端的に説明すると、リスポーン位置まで戻して、立ち上がるアニメーションをして、初期設定(init)をするという処理になります。

    ① 右クリックメニューから [ユニット制御] > [リスポーン] を選択し、[開始] の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [システム処理] > [待機] を選択し、数値に「700」を設定し、① の Out 端子と自身の In 端子を繋ぐ。
    ③ 右クリックメニューから [ユニット制御] > [アニメーションパラメータ] を選択し、パラメータ要素に「Trigger」、
      パラメータ名に「RespawnTrigger」を設定し、② の Out 端子と自身の In 端子を繋ぐ。
    ④ 右クリックメニューから [システム処理] > [待機] を選択し、数値に「600」を設定し、③ の Out 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [システム処理] > [ブランチ実行] を選択し、ブランチ名を「init」とし、④ の Out 端子と自身の In 端子を繋ぐ。

  上記工程の結果、respawn_start ステートウィンドウが以下のようになっていれば問題ありません。
  

■ move_wait, attack_wait, damage_wait, dead_start, respawn_start ステートウィンドウを閉じる
  move_wait, attack_wait, damage_wait, dead_start, respawn_start ステートの中身は上記だけですので、
  組み込み終わったら 右上の×ボタンを押して閉じます。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  

■ CharacterEditor の内容を上書き保存しておく
  ここまでの操作で、CharacterEditer の内容を上書き保存しておきましょう。
    ※ まだ CharacterEditor ウィンドウは閉じないでください。
  


プレイヤーアクションスクリプトを出力する

 CharacterEditor で編集したプレイヤー制御をスクリプトに出力します。

■ スクリプトを出力する
  CharacterEditor のメニューから [スクリプトを出力] ボタンをクリックします。
  

  保存する場所とファイル名は以下を指定してください。
    保存先の場所: C:/MOE_CEDEC_DEMO/MOE_CEDEC/Master
    保存ファイル名 :player_root.mos
  

  所定の場所(Master)にSimplePlayer.mos および SimplePlayer_param.h が作成され、
  以下のダイアログが表示されますので [OK] ボタンをクリックします。
  

■ CharacterEditor を閉じる
  スクリプトが出力されたら、CharacterEditor ウィンドウの右上の×ボタンをクリックして終了します。
  

  以下のダイアログが表示されたら[YES]ボタンをクリックしてください。
  


▲前のページへ
次のページへ▼