void Update() { float startTime = Time.realtimeSinceStartup; if (partitioningOfSpace) { for (int i = 0; i < enemySoldiers.Count; i++) { enemySoldiers[i].Move(); } for (int i = 0; i < closestEnemies.Count; i++) { closestEnemies[i].soldierMeshRenderer.material = enemyMaterial; } closestEnemies.Clear(); for (int i = 0; i < friendlySoldiers.Count; i++) { //Soldier closestEnemy = FindClosestEnemySlow(friendlySoldiers[i]); Soldier closestEnemy = grid.FindClosestEnemy(friendlySoldiers[i]); if (closestEnemy != null) { closestEnemy.soldierMeshRenderer.material = closestEnemyMaterial; closestEnemies.Add(closestEnemy); friendlySoldiers[i].Move(closestEnemy); } } } else { for (int i = 0; i < enemySoldiers.Count; i++) { enemySoldiers[i].Move(); } for (int i = 0; i < closestEnemies.Count; i++) { closestEnemies[i].soldierMeshRenderer.material = enemyMaterial; } closestEnemies.Clear(); for (int i = 0; i < friendlySoldiers.Count; i++) { Soldier closestEnemy = FindClosestEnemySlow(friendlySoldiers[i]); //Soldier closestEnemy = grid.FindClosestEnemy(friendlySoldiers[i]); if (closestEnemy != null) { closestEnemy.soldierMeshRenderer.material = closestEnemyMaterial; closestEnemies.Add(closestEnemy); friendlySoldiers[i].Move(closestEnemy); } } } float elapsedTime = (Time.realtimeSinceStartup - startTime) * 1000f; timeText.text = elapsedTime + "ms"; }
public virtual void Move(Soldier soldier) { }
// mvoe toward the closest enemy - will always move within its grid public override void Move(Soldier closestEnemy) { soldierTrans.rotation = Quaternion.LookRotation(closestEnemy.soldierTrans.position - soldierTrans.position); soldierTrans.Translate(Vector3.forward * Time.deltaTime * walkSpeed); }