Vector3 forward = transform.TransformDirection(Vector3.forward); Vector3 targetDirection = targetObj.transform.position - transform.position; float angle = Vector3.Angle(forward, targetDirection); fowardとして自分の進行方向の向きベクトルを作り、 targetObjの位置から自分の位置を引いたベクトルを作り(自分から相手に向かうベクトル) それぞれのベクトルの角度差を調べると、0~90度の範囲で角度差が帰る angleは鋭角で、ベクトルの長さは無視される なので、進行方向から110度の位置は、80度が返る? まだ未確認 これで視野角を判定するとマズイかも 調べると0~180度で返る模様 http://docs.unity3d.com/ja/current/ScriptReference/Vector3.Angle.html 角度は常に2つのベクトル間の 鋭角 を返します。(すなわち、必ず角度は180度未満) これ訳が間違ってるよね?鋭角は90度未満だから 90~180は鈍角だし 原文にacute angleって書いてた。原文が間違ってる。 ちなみに鈍角はobtuse angle 初めて見た acuteは鋭いって意味があるけど、鋭角は0~90未満の数学用語だよね