DungeonEater_MonsterCtrl仕様

MonsterCtrl


■Awake()
GridMoveインスタンス取得
GameCtrlインスタンス取得
GameCtrlコンポーネントのオブジェクトリストに自分自身のオブジェクトを加える
AudioChannnels型のコンポーネント取得
アニメーション「up_sword_action」のレイヤーを1にする

  • セットスポーンポジション
外部からスポーンポジションをセットする際に利用する
引数をスポーンポジションにセット

  • Onリスタート
ステータスをノーマルにセット
自キャラクタをスポーン位置に

  • Onゲームスタート
Onステージスタートを起動

  • Onステージスタート
ステータスをノーマルにセット
自キャラクタをスポーン位置に
シーン内のエネミータグのオブジェクトをコレクション
各オブジェクトのモンスターコントロールコンポーネントを拾って
コンポーネントが存在すればAIタイプをトレーサーにセット
tracer変数にモンスターコントロールの親トランスフォームをセット
シーンの中からプレーヤーオブジェクトを抽出。player変数に同トランスフォームを採取

  • Update()
なし

  • Onグリッド(これは外部のコンポーネントGridMoveからタイミング的にグリッドの交差点を通過した瞬間呼ばれる)
AIタイプによって各AIを処理する関数を起動する

  • ディレクションチョイス
引数に第一候補、第二候補を受け取り第三、第四候補を生成。
第一候補から第四候補まで順番に処理して方向がリバースかどうかチェック。
リバースでないなら進行方向へレイを飛ばして壁の有無を探る。
条件を満たした候補を先着にして値を返す。
全ての候補が条件を満たせない場合0を返す。

  • トレーサー
トレーサーのAIを処理する関数。
第一候補、第二候補の変数作成
差分=「プレーヤー」-「モンスター位置」
差分の絶対値XZで値の大きい方を第一候補にする小さい方は第二候補になる
ニューディレクション=ディレクションチョイスに候補を渡して返り値を得る
ニューディレクションが0なら現在の進行方向とは逆の方向をGridMoveのディレクションにセットする
それ以外ならニューディレクションをGridMoveのディレクションにセットする


  • アンブッシュ
第一候補、第二候補の変数作成
差分=「プレーヤーの3グリッド先前方の位置」-「モンスター位置」
後の処理はトレーサーのAI処理とほぼ同一

DIRECTION_VEC あらかじめ4方向が入ったVector3の配列
DISTANCE_RANDOM_MOVE 反応距離

  • ランダムAI
第一候補、第二候補の変数作成
差分=「プレーヤー」-「モンスター位置」
差分の長さが10ユニットより小さければランダム処理を実行。それより遠ければトレーサーの処理を実行する(つまり距離が近ければランダムになる)
r=0~3までのランダムな値

第一候補、第二候補に縦横ペアになるように方向が入る
配列が「横右」「横左」「縦上」「縦下」の順に収められている
rで配列の番号をランダムに選びその値を(r+2)%4するとペアになる

ランダムな値を生成して1/2の確率で第二候補の方向を反転させる
ニューディレクション=ディレクションチョイスに候補を渡して返り値を得る
ニューディレクションが0なら現在の進行方向とは逆の方向をGridMoveのディレクションにセットする
それ以外ならニューディレクションをGridMoveのディレクションにセットする


  • ピンサー(挟み撃ち)
第一候補、第二候補の変数作成
相棒(tracer)がnullであれば、差分=「プレーヤー」-「モンスター位置」
いれば、「プレーヤー」×2-「相棒の位置」-「モンスター位置」
(2匹のモンスターとの差分位置)
後の処理はトレーサーと同じ

  • セットディフィカルト
難易度の設定。引数がMAX_LEVELで決められた最高難易度を超えていた場合、難易度はMAX_LEVELになる。GridMoveのSPEEDを「ベーススピード+難易度×スピードアップパーレベル」で計算して代入する。

■OnTrigggerEnter()
接触判定。ステータスがノーマル以外なら即return以降の処理はキャンセル。引数からプレーヤーコントローラーコンポーネントのインスタンスを拾う。インスタンスがnull以外なら拾えているのでプレーヤーコントロールのEncount()を引数を渡して起動する。

  • ダメージ
「Onデッド」メッセージを自分自身に発行。
ステータスをデッドへ。スコアを既定値加算。
ビルボードオブジェクトを複製して死亡した位置に表示。
ビルボード内テキストにスコアの値を文字列として入れる。
「デッド」コルーチンを起動する。

  • Onステージクリア
全てのコルーチンを停止。
「Onデッド」メッセージを自分自身に発行。
ステータスをデッドへ。

  • デッド
コルーチン専用関数。3秒停止。ステータスをノーマルにして「OnRebone」メッセージを自分自身に発行。

  • アタック
攻撃。アタックする対象として引数を受け取る。
「アタックサブ」コルーチンを起動。

  • アタックサブ
コルーチン用。ゲームコントロールコンポーネントのOnAttack()を起動。自分自身のtransformをアタックターゲットの方へ向ける。
ヌルをひとつ返す。剣を振るアクションのアニメーションに移行。アタック時の効果音を再生。0.5秒停止。アタックする対象に「ダメージ」メッセージを発行(これによりプレーヤーキャラクタは殺される処理を行う)。アイドルモーションへ移行。ゲームコントロールコンポーネントのOnEndAttack()を起動。
(OnAttack()やOnEndAttack()は攻撃した際のカメラ操作を行っている)




  • 最終更新:2013-09-10 17:05:44

このWIKIを編集するにはパスワード入力が必要です

認証パスワード