예제 #1
0
    public override void Update(Dictionary <int, RadarProfile> radarProfiles)
    {
        int   closestEnemyUID      = Omniscience.NULL_UID;
        float closestEnemyDistance = float.MaxValue;

        foreach (RadarProfile radarProfile in radarProfiles.Values)
        {
            if (radarProfile.Team != Spaceship.Team)
            {
                float distance = (Spaceship.Position - radarProfile.Position).magnitude;
                if (distance < closestEnemyDistance)
                {
                    closestEnemyUID      = radarProfile.UID;
                    closestEnemyDistance = distance;
                }
            }
        }

        if (closestEnemyDistance < AgroDistance)
        {
            Aggroed        = true;
            AggroCountdown = DeagroTime;
        }
        else if (Aggroed == true && closestEnemyDistance > DeagroDistance)
        {
            AggroCountdown -= Time.deltaTime;
            if (AggroCountdown <= 0f)
            {
                Aggroed = false;
            }
        }

        if (Aggroed & closestEnemyUID != Omniscience.NULL_UID)
        {
            Spaceship.SelectTarget(closestEnemyUID);
            Spaceship.QueueAttack(1);
        }
        else
        {
            Spaceship.DropTarget();
        }

        if (Spaceship.Velocity.magnitude > 0f)
        {
            Autopilot.Halt();
        }
    }