主要用於個人筆記記錄
創建對象主要使用的是 Instantiate 方法,在本案例中,使用協程進行敵人的創建。
需求,模仿王者榮耀出兵系統,利用NavMeshAgent自動追蹤塔進行尋路。
public class ReviewAutoCreateObject : MonoBehaviour
{
public GameObject targetObject;
public Transform enemyParent;
public Transform[] startTrans;
public Transform[] startEnemyTrans;
public Transform[] middleTowns;
public Transform[] middleEnemyTowns;
public Transform[] leftTowns;
public Transform[] leftEnemyTowns;
public Transform[] rightTowns;
public Transform[] rightEnemyTowns;
public bool isCreate = true;
public int objNum = 3;
// Use this for initialization
void Start()
{
StartCoroutine(Create(0, 1, 5));
}
void CreateObject(Transform startTran, Transform[] townss)
{
GameObject goj =
Instantiate(targetObject, startTran.position, Quaternion.identity) as GameObject;
goj.transform.parent = enemyParent;
SmartTraceTowns stts = goj.GetComponent<SmartTraceTowns>();
stts.towns = townss;
}
// Update is called once per frame
void Update()
{
}
IEnumerator Create(float time, float delayTime, float swapTime)
{
yield return new WaitForSeconds(time);
while(isCreate)
{
for(int i=0; i<objNum; i++)
{
CreateObject(startTrans[0], middleEnemyTowns);
CreateObject(startTrans[1], leftEnemyTowns);
CreateObject(startTrans[2], rightEnemyTowns);
CreateObject(startEnemyTrans[0], middleTowns);
CreateObject(startEnemyTrans[1], leftTowns);
CreateObject(startEnemyTrans[2], rightTowns);
yield return new WaitForSeconds(delayTime);
}
yield return new WaitForSeconds(swapTime);
}
}
}
public class SmartTraceTowns : MonoBehaviour
{
public Transform[] towns;
public NavMeshAgent agent;
public Transform target;
// Use this for initialization
void Start()
{
agent = GetComponent<NavMeshAgent>();
target = GetTargetTown();
}
// Update is called once per frame
void Update()
{
//Transform townTmp = GetTargetTown();
if(target == null)
{
target = GetTargetTown();
}
agent.SetDestination(target.position);
}
Transform GetTargetTown()
{
for(int i=0; i<towns.Length; i++)
{
if (towns[i] != null)
return towns[i];
}
return null;
}
public void setRoad(int index)
{
agent.areaMask = index;
}
}