using UnityEngine;
using System.Collections;
public class WaypointsMover : MonoBehaviour {
public float rotateSpeed = 2.0f;
private bool rotating;
void Update() {
StartCoroutine(TurnTowards(-transform.forward));
}
IEnumerator TurnTowards(Vector3 lookAtTarget) {
if(rotating == false) {
Quaternion newRotation = Quaternion.LookRotation(lookAtTarget - transform.position);
newRotation.x = 0;
newRotation.z = 0;
for (float u = 0.0f; u <= 10.0f; u += Time.deltaTime * rotateSpeed) {
rotating = true;
transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, u);
yield return null;
}
rotating = false;
}
}
// Use this for initialization
void Start() {
}
}
沒有,如果我rotateSpeed的值更改爲10.0f或20.0f敵人將獲得一面會走一些地方上,然後將轉身到另一邊的事情。我怎麼能讓敵人在走到一邊時馬上轉身?爲什麼敵人定位在這個地方?爲什麼旋轉速度永不改變?
爲什麼在場景中的敵人位於建築物屋頂上時,我將它們放置在另一個地方?
我該如何設置航點?我無法在代碼方式中找到點。我知道,在for循環它是在原:
爲(浮動U = 0.0F;Ù< = 1.0F; U + = Time.deltaTime * rotateSpeed){
我改變它到10.0f而不是1.0f,所以現在他們在屋頂上走得更長。但是,如果我想讓他們會在兩個領域之間去?
這是一個場景的截圖,右邊的建築物在運行遊戲時在屋頂上行走。左邊的兩個敵人(守衛)是主要玩家。相機我把它設置爲遵循第一衛隊。
我也注意到他們之間沒有空間,所以他們互相碰撞或互相打擾走路。我在哪裏或如何在他們之間設置更多空間,以便每個人都能走上自己的道路?
這是一個簡短的視頻剪輯我錄展示他們是如何行走,並在那裏他們都走:
1-檢查您的敵人(AI)代碼我確信您正在設置位置。 2 - 我不知道每個敵人使用什麼腳本,但我確信你只有一個「WaypointsMover」實例(我認爲這是某種經理)。如果沒有,請粘貼敵方代碼和組件?謝謝。 – Cabrra
@Cabrra我現在檢查我看到在對象選項卡中的導航窗口中的地形我檢查,使其導航靜態,然後我點擊烘烤。所以現在的敵人從他們在場景中的位置開始。但由於某種原因,他們首先在大樓下面,在那裏他們正在巡邏。我無法弄清楚爲什麼要去建築物。 –
@Cabrra我查看了現在,我看到在對象選項卡中的導航窗口中的地形檢查,使其導航靜態,然後我點擊烘烤。所以現在的敵人從他們在場景中的位置開始。但由於某種原因,他們首先在大樓下面,在那裏他們正在巡邏。我無法弄清楚爲什麼要去建築物。 –