weirrrrd problem私はここにいます。私は敵の視界を実現しました。そのため、プレイヤーが検出可能なエリア(前方120度のコーン)を移動すると、FOVの外に出るまで、悪い人に追われます。FOVテストでは、プレイヤーがinfront AND behindを検出しています
問題は、敵の背中からも出てくる120FOVのコーンがあるので、2つのコーンを前面に1つ、後ろに1つ、前面に1つ使用したいだけです。私が考えることができるのは、私が渡されたPIをあふれさせているということだけですか?私は本当にわからない。
このチュートリアルでは、ベクトル演算を使用してこれを実装しました。ドットプロダクトセクション。 http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/
ここにFOVに関するコードがあります。
Vector2 EnemyVecAngle = new Vector2((float)Math.Cos(EnemyAnimation.Angle), (float)Math.Sin(EnemyAnimation.Angle));
//normalize
Vector2 EnemyFacingN = Vector2.Normalize(EnemyVecAngle);
Vector2 EnemytoPlayer = Vector2.Normalize(player.Position - Position);
//check angle
float CheckAngle = (float)Math.Acos(Vector2.Dot(EnemyFacingN, EnemytoPlayer));
if ((CheckAngle >= 60) && (CheckAngle <= 120)
following = true;
これはtehのプレイヤーに向けた敵の顔は、かつて私はそれを動作させるために-PI/2を追加する必要がある理由私は思ったんだけど
EnemyAnimation.Angle = (float)Math.PI/-2 + (float)Math.Atan2(Position.Y - player.Position.Y, Position.X - player.Position.X);
を検出し、私はこれができると思いますステートメントです問題に関連している。どんな助けでも大歓迎です!