ベクトル補講 鬼から逃げるAIキャラを作ろう

※本サイトはアフィリエイト広告を利用しています。

敵AIの動画にご質問いただいた件の説明です。

プレイヤーが鬼役(上図は逆です)でそこから逃げるNPCキャラの移動方向を考えましょう。

まず移動したい方向は、プレイヤーと反対方向ですね。

ベクトルは矢じり(とがってないほう)から矢先(とがってるほう)に向かう方向に足し算できます。

下図で原点から青い方向に進むとプレイヤーの位置に着き、そこからさらに黄色の方向に進むとNPCの位置に着きますね。
一方、原点から緑の方向に進んでもNPCの位置に着きます。

このように、足し算で考えられます。同様に青は緑+赤ですね。
また、赤と黄色は真逆なので-1倍の関係性です。

イコールをまたいで逆側に移動させるときはマイナス1倍します。

そうやって考えれば、赤は青ー緑で、黄色はその逆で緑ー青です。

行きたい地点はNPCから見て黄色の方向で、緑に黄色(つまり緑ー青)を足せば行けます。

よっしー
よっしー

図には書いていませんが、緑+緑ー青なので緑方向2倍進んだ地点から青を反転させたものを足しても同じ地点にたどり着きますね。

ここで、黄色の方角に任意の距離進ませたい場合はどうすればよいでしょう?

Normalizeというノードで単位ベクトルという長さが1のベクトルを得られます。
それに進ませたい距離を掛ければ任意の距離進めますね。

上の水色のように、自分の位置からみて鬼から反対に移動する処理はこんな感じです。

鬼から一定の距離を取るようにしたい場合は、青+水色xNとすればOKです。

よっしー
よっしー

端っこに追い詰めると動けなくなるので、AI MoveToが失敗した場合は、現在の位置を中心にランダムな位置に逃げるようにするとなおいいと思います。

コメント

タイトルとURLをコピーしました