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";
        }
Exemple #2
0
 public virtual void Move(Soldier soldier)
 {
 }
Exemple #3
0
 // 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);
 }