예제 #1
0
    public override void EnterState(GameObject agent)
    {
        if (agent.tag == Constants.MinionTag)
        {
            Debug.Log("Enter Formation State");
        }

        Animator anim = agent.GetComponent <Animator>();

        anim.SetBool("isMoving", true);

        GameObject     ai      = agent.transform.Find("AI").gameObject;
        TeamController teamCon = ai.GetComponent <TeamController>();

        if (teamCon.IsTeamLeader())
        {
            CreateFormation(agent, ai);
        }

        NavMeshAgent navAgent = agent.GetComponent <NavMeshAgent>();

        if (navAgent == null)
        {
            return;
        }
        navAgent.enabled = false;

        KinematicController kin = ai.GetComponent <KinematicController>();

        kin.UpdateOrientation();
        kin.UseKinematic(true);
    }
예제 #2
0
    public void SetTarget(GameObject target)
    {
        if (target == null)
        {
            return;
        }

        this.target = target;
        KinematicController con = target.GetComponent <KinematicController>();

        if (con == null)
        {
            return;
        }
        targetKinematic = con.GetKinematic();
    }
예제 #3
0
    public void SetNextTarget(GameObject agent, AgentController controller)
    {
        AgentSensor       sense   = controller.sensor;
        List <GameObject> enemies = sense.GetEnemies();

        controller.shootTarget = ChooseTarget(agent, controller, enemies);
        controller.weapon.SetTarget(controller.shootTarget);

        GameObject          aiChild  = TD_Utility.Utility.GetChildByTag(agent, Constants.AITag);
        Face                steering = TD_Utility.Utility.GetChildByTag(aiChild, Constants.SteeringTag).GetComponent <Face>();
        KinematicController kin      = aiChild.GetComponent <KinematicController>();

        kin.SetAlternativeSteeringBehaviour(steering);
        kin.SetTarget(controller.shootTarget);
        kin.UseKinematic(true);
    }
예제 #4
0
    public override void ExitState(GameObject agent)
    {
        if (agent.tag == Constants.MinionTag)
        {
            Debug.Log("Exit Formation State");
        }

        GameObject          ai  = agent.transform.Find("AI").gameObject;
        KinematicController kin = ai.GetComponent <KinematicController>();

        kin.SetTarget(null);
        kin.UseKinematic(false);

        Animator anim = agent.GetComponent <Animator>();

        anim.SetBool("isMoving", false);
    }
예제 #5
0
 // Start is called before the first frame update
 void Start()
 {
     kinController = GetComponent <KinematicController>();
     kinController.SetTarget(target);
 }