예제 #1
0
    public override void Attacked(Transform attacker) //blev attackerad av någon
    {
        base.Attacked(attacker);

        if (attacker.GetComponent <AIBase>().GetNrAttackers() > nrAcceptedAttackersOnTarget) //pallar inte bry mig om den redan har massa targets
        {                                                                                    //har target dock väldigt få attackers på sig så kan jag oxå stanna
            return;
        }

        if (target != null && targetBase != null && targetBase.GetNrAttackers() < nrAcceptedAttackersOnTarget) //det target jag har nu är nog inte så fel
        {
            return;
        }

        if (state != UnitState.AttackingUnit && state != UnitState.Moving && attacker != null)
        {
            bool validTarget = true;
            for (int i = 0; i < friendlyLayers.Count; i++) //kolla så att man inte råkar göra en friendly till target
            {
                if (LayerMask.LayerToName(attacker.gameObject.layer) == friendlyLayers[i])
                {
                    validTarget = false;
                    break;
                }
            }
            if (attacker.gameObject.layer == thisTransform.gameObject.layer)
            {
                validTarget = false;
            }


            if (validTarget == true)
            {
                if (target == null || !isUnitAttackingMe(target)) //attackera hellre det targetet som attackerar mig än det som inte gör de
                {
                    NewTarget(attacker);
                }
                else
                {
                    Transform temp = ClosestTransform(target, attacker); //ta den som är närmst
                    NewTarget(temp);
                }
            }
        }
    }