敵が自分のプレーヤーを見ることができるかどうかを確認するにはどうすればよいですか?


15

プレイヤーと敵に位置があり、それぞれの方向ベクトルが与えられている場合、一方が他方を「見る」ことができるかどうかをどのように確認できますか?

言い換えると、方向を持つ1つの位置が方向を持つ別の位置の前または後ろにあるかどうかをテストするにはどうすればよいですか?

私の目的では、「前」とは、直接、または左右に90度のことを意味します。


11
明らかに解決策は、別のカメラを作成し、敵の視点からシーンを再レンダリングしてから、プレイヤーキャラクターの結果に対して画像認識を実行することです。
ライキン14年

最も単純な答え賞は...へ行く
OganM

3
Rikingのコメントは冗談として意図されている可能性がありますが、これは実際の公正な方法です-NPCに、ゲームの内部状態へのアクセスを許可するのではなく、プレイヤーが持っているゲーム状態への同じアクセスを与えます。
R .. GitHubのヘルプICEの停止14

5
@R ..はい、しかしどこで線を引きますか?彼らはおそらく合理的にとにかく再びwallhackingを開始することを決定したと思われる時点で、その論理的なエンドポイント、再生すると、人間のように考える能力を持つNPCの最終的になって衆生...この推論を撮影:P
トーマス

@Thomas:実際には、プレイヤーが持っている情報のレベルを、そのように実装する手間をかけずに、ある程度の妥協をすることができると思います。視線の正確なテスト、特定の距離を超えるオブジェクトの識別機能の制限などの単純な手段は、長い道のりを歩む可能性があります。
R .. GitHub停止ヘルプICE

回答:


17

2つのベクトルのドット積は、それらが互いに向き合っているかどうかを示します。最初のベクトルはおそらく敵の視線方向であり、2番目のベクトルはプレイヤーの位置から敵の位置を指すベクトルでなければなりません。

https://www.youtube.com/watch?v=Q9FZllr6-wY


ああ、私はそれを考えすぎていた。私は4つのベクターをジャグリングしていましたが、実際には1人のプレイヤーから別のプレイヤーへのベクターが必要です。ビデオはとても役に立ちました、ありがとう。
izb 14年

私はこの答えに追加すべきだと思う一つの重要な詳細は、ゲームはまた、彼らは実際には(壁などによってブロックされていない)選手を見ることができることを保証するために、レイキャストや何かを行う必要がありますです
T.カイリー

1
@ T.Kiley:質問へのコメントでRikingによって実際に提案されました。いいえ、私はそれが冗談だと​​は思いません。ゲームが3Dの場合、レイキャスティングは実際にそれを行う公正な方法です。敵の視点から、すべてのオブジェクトを黒いテクスチャでシーンを再レンダリングします。ただし、プレーヤーやその他の重要なオブジェクトは他の色でレンダリングする必要があります。ライティングとシェーディングを必ず無効にしてください。結果のバッファが完全に黒ではない場合、誰かが敵の視線内にいることがわかっているので、色を使用して敵が何であるかを識別できます。
ライライアン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.