Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (structure.Weapon)
        {
            if (acquireTargetCooldown.Check(Time.time))
            {
                ShipStructure[] potentialTargets = shipManager.FindNearbyShips(structure, maxAcquireDistance).ToArray();
                if (potentialTargets.Length > 0)
                {
                    currentTarget = RandomExtensions.RandomElement(potentialTargets);
                    loseTargetCooldown.Reset(Time.time);
                }
            }

            if (currentTarget && loseTargetCooldown.Check(Time.time) && structure.DistanceTo(currentTarget) > maxAcquireDistance)
            {
                currentTarget = null;
            }

            if (currentTarget)
            {
                structure.Weapon.Aim(currentTarget.transform.position);
                structure.Weapon.Fire();
            }
        }
    }
Exemplo n.º 2
0
 public IEnumerable <ShipStructure> FindNearbyShips(ShipStructure structure, float distance)
 {
     foreach (ShipStructure ship in ships)
     {
         if (ship != structure && structure.DistanceTo(ship) <= distance)
         {
             yield return(ship);
         }
     }
 }