示例#1
0
 /// <summary>
 /// Switch camera's target with a new one
 /// </summary>
 /// <param name="newTarget"></param>
 public void SwitchTarget(Transform newTarget = null)
 {
     // TODO: Hcaer una versión limpia
     if (newTarget == null)
     {
         currentTarget = targetPlayer;
         EnemyAnalyzer.Release();
         //targetOffset.x = 3;
     }
     else
     {
         // TODO: Sustituirlo del todo
         currentTarget = newTarget;
         EnemyAnalyzer.Release();
         EnemyAnalyzer.Assign(newTarget);
         //targetOffset.x = 0;
     }
     // In any case
     //targetOffset.y = 0;
 }
示例#2
0
    //
    void SwitchToNearestInWorldEnemy()
    {
        //Debug.Log("Switching to nearest enemy in world " + EnemyAnalyzer.lastEnemyPosition);
        //
        Transform enemyToSwitch = null;
        float     nearestDistance;

        //
        Targeteable[]      enemies            = FindObjectsOfType <Targeteable>();
        List <Targeteable> targeteableEnemies = FilterActiveTargeteables(enemies);

        //
        if (targeteableEnemies.Count > 0)
        {
            enemyToSwitch   = targeteableEnemies[0].transform;
            nearestDistance = (enemyToSwitch.position - EnemyAnalyzer.lastEnemyPosition).magnitude;
        }
        else
        {
            SwitchTarget();
            return;
        }

        //
        for (int i = 1; i < targeteableEnemies.Count; i++)
        {
            float nextOnedistance = (targeteableEnemies[i].transform.position - EnemyAnalyzer.lastEnemyPosition).magnitude;
            if (nextOnedistance < nearestDistance)
            {
                enemyToSwitch   = targeteableEnemies[i].transform;
                nearestDistance = nextOnedistance;
            }
        }
        //
        EnemyAnalyzer.Release();
        EnemyAnalyzer.Assign(enemyToSwitch);
        SwitchTarget(enemyToSwitch);
    }