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

NPC召還スキルの実装


【目次】
キャラクタエディタを開く
input_select ステートラベルの編集
プレイヤー死亡時にスキル使用フラグをONにする。
プレイヤーアクションスクリプトを出力する


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

 ここまでで完成といえば完成ですが、v1.1 にもなったことですし、拡張された機能を使って、もう少し変わったことをやってみましょう。
 ということで、以下のような仕様を追加したいと思います。
プレイヤーが死ぬと復活しますが、復活する際にスキルボタンが有効になり、
それを押すとドラゴンが自分の勢力のペットとして召喚できます。

 プレイヤーのキャラクタエディタを変更して、プレイヤーのスキル実装と任意のキャラクタ登場処理を組み込んでみましょう。

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

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

  開くファイル名は以下を指定してください。
    C:/MOE_CEDEC_DEMO/MOE_CEDEC/Master/player_root.xml
  

  ファイルを開くと、前回まで組み込んでいたプレイヤーのキャラクタエディタが開きます。
  


input_select ステートラベルの編集

 早速、スキル発動時の処理を組み込んでいきましょう。

■ input_select ステートラベルを開く
  プレイヤーの入力割り込み処理は input_select ステート内に記述していますので、まずこれを開きます。(下図右下)
  

■ input_select ステートラベルを編集する
  input_select ステートラベルの中は以下のようになっていますので、まずはこの中の「割り込み終了」の右上の×ボタンを押して消去します。
  

  ×ボタンで消去すると以下の状態になります。
  

■ スキルボタン入力時の割り込み制御を追加する
  この状態から、以下の手順で、input_select ステートラベルの中身に制御を追加していきます。

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

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


■ skill_start ステートラベルを編集する
 上記 ③ で追加した skill_start ステートラベルの中身を作成しましょう。
 skill_startステートラベルの [エディタを開く]ボタンを押下して、以下の制御を順に組み込んでください。
    ※ 内容として端的に説明すると、SkillFlag が ON になったら、自身と同じ場所に、自身の味方となるドラゴンを出現させるという処理になります。

    ① 右クリックメニューから [変数・定数] > [比較分岐] を選択し、比較演算を「Arg1==Arg2」とし、[開始]の Out 端子と自身の In 端子を繋ぐ。
    ② 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、名前を「SkillFlag」とし、① の Arg1 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [定数] を選択し、型を「Int」、値を「0」とし、① の Arg2 端子と自身の Out端子を繋ぐ。
    ④ 右クリックメニューから [システム処理] > [ブランチ実行] を選択し、ブランチラベル名に「end」を設定し、① の True 端子と自身の In 端子を繋ぐ。
    ⑤ 右クリックメニューから [変数・定数] > [変数の設定] を選択し、① の False 端子と自身の In 端子とを繋ぐ。
       同時に、③ の Out 端子と自身の In 側 Value 端子を繋ぐ。
    ⑥ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、名前を「SkillFlag」とし、⑤ の Out 側 Value 端子と自身の In 端子を繋ぐ。
    ⑦ 右クリックメニューから [共通処理] > [勢力取得] を選択し、⑤ の Out 端子と自身の In 端子とを繋ぐ。
    ⑧ 右クリックメニューから [変数・定数] > [定数] を選択し、型を「Int」、値を「0」とし、⑦ の UnitId 端子と自身の Out端子を繋ぐ。
    ⑨ 右クリックメニューから [変数・定数] > [変数の設定] を選択し、⑦ の Out 端子と自身の In 端子を繋ぐ。
    ⑩ 右クリックメニューから [変数・定数] > [戻り値] を選択し、⑨ の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ⑪ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、名前を「MyTeam」とし、⑨ の Out 側 Value 端子と自身の In 端子を繋ぐ。
    ⑫ 右クリックメニューから [共通処理] > [ユニット座標取得] を選択し、⑨ の Out 端子と自身の In 端子を繋ぐ。
    ⑬ 右クリックメニューから [変数・定数] > [システム変数] を選択し、変数名に「My Unit Id」とし、⑫ の UnitID 端子と自身の Out 端子を繋ぐ。
    ⑭ 右クリックメニューから [変数・定数] > [変数の設定] を選択し、⑫ の Out 端子と自身の In 端子を繋ぐ。
    ⑮ 右クリックメニューから [変数・定数] > [戻り値] を選択し、⑭ の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ⑯ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Vector3」、名前を「playerPos」とし、⑭ の Out 側 Value 端子と自身の Out 端子を繋ぐ。
    ⑰ 右クリックメニューから [共通処理] > [ユニット生成] を選択し、⑭ の Out 端子と自身の In 端子を繋ぐ
       同時に、 ⑪ の Out 端子と自身の勢力ID 端子を繋ぐ。
    ⑱ 右クリックメニューから [変数・定数] > [定数] を選択し、型を「Int」、値を「11(ドラゴンのUnitID)」とし、⑰ の UnitMasterId 端子と自身の Out 端子を繋ぐ。
    ⑲ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Vector3」、変数名を「playerPos」とし、⑰ の 位置端子と自身の Out 端子を繋ぐ。
    ⑳ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、⑰ の Out 端子と自身の In 端子を繋ぐ。

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

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

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


プレイヤー死亡時にスキル使用フラグをONにする。

 あとはプレイヤー死亡時にスキル使用フラグを ON にするのみです。

■ respawn_start ステートを開く
  以下の手順で respawn_start ステートを開きましょう。

    ① CharacterEditor ウィンドウ内にて、「damage_wait」のステートウィンドウのエディタを開く。
      
    ② damage_wait ステートウィンドウ内にて、「dead_start」のステートウィンドウのエディタを開く。
      
    ③ dead_start ステートウィンドウ内にて、「respawn_start」のステートウィンドウのエディタを開く。
      

■ respawn_start ステート処理に「スキル使用フラグON」の処理を追加する
  respawn_start ステートの処理内容について「スキル使用フラグON」の処理を追加します。
  まず、一番右端のラベルとなる「ブランチ実行」の右上の×ボタンをクリックして消去します。
  

  すると、以下のような状態になります。
  

  この状態で、以下の手順で処理を組み込んでください。

    ① 右クリックメニューから [変数・定数] > [変数の設定] を選択し、▲ の Out 端子と自身の In 端子を繋ぐ
    ② 右クリックメニューから [変数・定数] > [定数] を選択し、型を「Int」、値を「1」とし、① の In 側 Value 端子と自身の Out 端子を繋ぐ。
    ③ 右クリックメニューから [変数・定数] > [変数] を選択し、型を「Int」、変数名を「SkillFlag」とし、① の Out 側 Value 端子と自身の In 端子を繋ぐ。
    ④ 右クリックメニューから [システム処理] > [割り込み終了] を選択し、① の Out 端子と自身の In 端子を繋ぐ。

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

■ damage_wait, dead_start, respawn_start ステートウィンドウを閉じる
  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]ボタンをクリックしてください。
  


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