c88-ai_all.png

概要

  • 敵の挙動。ビヘイビアツリーで構築。
  • EQS使おうとしたけど、一回試して上手く動かなかったので断念
  • マスター予定日当日に調整してたのもあって、途中からかなり雑に。

Blackboard

Service

HandgunCheckService、MissileCheckService

  • ハンドガン、ミサイルで撃たれているかをチェックするサービス。
  1. 「Get All Actors with Interface」等でリストを全部取得。
  2. actorの所属グループを観て敵が発射したものを収集
  3. 一番近い弾を避ける対象の弾としてBlackboardに保存
    • 弾と自身の射線上に障害物(背景)がある場合は除外する

AttackShortService、AttackLongService

  • 近距離、遠距離用攻撃サービス
  1. 「Event Receive Activation」でアクティブになったタイミングで、短距離、遠距離武器の発射ボタンを押し始める
  2. 「Event Receive Deactivation」でサービスを抜けるタイミングで、短距離、遠距離武器の発射ボタンを離す

BoostUseService

  • ブーストボタン押しサービス
  1. 「Event Receive Activation」でアクティブになったタイミングで、ブーストボタンを押す
  2. 「Event Receive Deactivation」でサービスを抜けるタイミングで、ブーストボタンを離す
  3. 「Event Recieve Tick」でブーストゲージが指定以下になったらブーストボタンを離す。一定以上回復したら再度押す。

Task

近距離

仕様

  • 近距離範囲内
    • ハンドガンで撃たれているかをチェックする
    • ミサイルで撃たれているかをチェックする
    • 近距離用の攻撃セットを実行
    • 移動行動
      • ミサイルで撃たれていればミサイル用の回避行動をとる。+ブースト使用。
      • ハンドガンで撃たれていればハンドガン用の回避行動をとる。+ブースト使用。
      • 相手を狙いつつ現状維持行動
      • 相手に近づく

ビヘイビアツリー

c88-ai_short_01.png

  • Blackboardの「Is Short Length」(近距離範囲内か)がtrueなら入る
  • サービスとして近距離範囲内では常時動かしたい処理を回す。
    • 「HandgunCheckService」ハンドガンで撃たれているかチェック
    • 「MissileCheckService」ミサイルで撃たれているかチェック
    • 「AttackShortService」近距離用の攻撃

c88-ai_short_02.png

  • 優先順位として、
    1. ダメージの大きいミサイル回避
    2. ハンドガン回避
    3. ここに来ると狙われていないので適当な平行移動
    4. 左右に回避したら敵を狙えなければMoveToで近づく
    5. 最後ここまで来てスルーすると近距離行動以外のノードに行ってしまうので、ここで終わらせる。強制的にSuccessを返す。

遠距離

  • 近距離とほぼ一緒。近距離用の動作が遠距離になったり、パラメーターが一部違うだけ。
    c88-ai_long_01.png
    c88-ai_long_02.png

難易度調整


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS