Unity 判斷兩物之間距離、角度,並注視目標


當要開始撰寫一個敵人AI時,總會有許多需要做判斷與偵測的,在這裡我們將最基本的距離與角度判斷稍作撰寫,判斷兩個GameObject的Position距離,並以數學公式計算之間的水平角度。
相信可以用這個基礎程式延伸撰寫為一個敵人角色的AI。


var target : Transform; // 宣告 注視目標
var viewAngle :float = 20.0; // 尋敵角度
var viewDis : float = 8.0; // 尋敵距離
function Update() {
// 宣告 dis 浮點數 為 本身與目標之間距離
var dis : float=Vector3.Distance(transform.position, target.transform.position);
// 距離小於 8.0 則
if (dis < viewDis)
{
// 宣告 注視目標座標 為 目標位置
var lookAtPos : Vector3 = target.position;
// 本身與目標之間相對位置
var relative : Vector3 = transform.InverseTransformPoint(lookAtPos);
// 計算兩者之間角度
var angle : float = Mathf.Atan2(relative.x, relative.z) * Mathf.Rad2Deg;
// 兩者角度絕對值 小於 尋迪角度 則
if (Mathf.Abs(angle) < viewAngle)
{
   // 注視目標座標Y軸 為 自身Y軸
   lookAtPos.y = transform.position.y;
// 注視目標
   transform.LookAt (lookAtPos);
}
}
}

留言

這個網誌中的熱門文章

參加畢業展之設計類展場小心得

Action Game Maker 1.03 正體中文漢化版