當要開始撰寫一個敵人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); } } }
留言
張貼留言