スポンサーリンク

公式AIが特定の状況下でスタックする原因と修正方法

↓よろしければボタンをご利用ください。

スタックする状況

ホムが主人に追従しているとき、 主人の行く先に敵が現れるとスタックします。

原因

索敵関数 GetMyEnemy (myid) は、「主人を中心」とした範囲で敵を探しています。

敵を発見すると、攻撃するために敵がいる場所までホムを移動させる処理に移るのですが、
途中で敵がテレポートしたり倒されたりすると行動をキャンセルする必要があるので、
移動処理の中に、敵がまだ存在しているか調べる処理が入っています。

このとき、「ホムを中心」とした範囲で敵を調べているため、
敵がいなくなったと判断したホムは行動を停止し、
手順2に戻って新たな敵を探そうとして同じ敵を発見し・・・というループに陥ります。
(スタック発生)

修正方法

AI.luaの300行目あたりにある
OnCHASE_ST () の最初のほうにある
IsOutOfSight(MyID,MyEnemy) を
IsOutOfSight(GetV (V_OWNER,MyID),MyEnemy) に変更しましょう。

スポンサーリンク

↓よろしければボタンをご利用ください。

↓更新情報のチェックにご利用ください。