Exemplo n.º 1
0
    void Start()
    {
        PatrolPoints = GameObject.FindGameObjectWithTag("PatrolPointManager").GetComponent <PatrolPointManager>().RequestPatrolPoints(PatrollingPointsID);
        NavAgent     = GetComponent <AINavigation>();

        waitingPeriod = 2.0f;

        newTargetSet = false;
        target       = 0;
    }
Exemplo n.º 2
0
        public override void RunMainAction(GAgent gAgent)
        {
            var herbivore = gAgent as Herbivore;
            var pos       = AINavigation.Flee(herbivore.PredatorTargets[0].position, gAgent.agent, 40f);

            var data = new GStateData(gAgent.controller, gAgent.agent, pos, gAgent.anim, "run", 2f);

            Debug.Log("Setting navigation course to: " + pos);
            gAgent.controller.Move(data);
        }
Exemplo n.º 3
0
        public override void RunMainAction(GAgent gAgent)
        {
            Vector3 locationTarget = Vector3.zero;

            locationTarget = AINavigation.RandomNavSphere(gAgent.transform.position, gAgent.ViewSphereRadius + 20, -1, false);

            var data = new GStateData(gAgent.controller, gAgent.agent, locationTarget, gAgent.anim, "walk", 2f);

            Debug.Log("Setting navigation course to: " + locationTarget);
            gAgent.GenerateLocationGizmo(locationTarget);
            gAgent.controller.Move(data);
        }
Exemplo n.º 4
0
        public void GetDestination(StateController controller)
        {
            controller.DestinationList.Clear();

            if (controller.FleeTarget == null)
            {
                return;
            }

            var pos = AINavigation.Flee(controller.FleeTarget.position, controller.NavMeshAgent, 20f);

            controller.DestinationList.Add(pos);
        }
Exemplo n.º 5
0
        public void GetDestination(StateController controller)
        {
            var destinations = controller.DestinationList;

            if (destinations.Count < 2)
            {
                var location = AINavigation.RandomNavSphere(controller.WanderOrigin, controller.WanderDistance, -1, false);
                destinations.Add(location);
            }

            //if (destinations.Count < Mathf.Infinity)
            //{
            //    var location = AINavigation.Wander2(controller.WanderOrigin, controller.NavMeshAgent, controller.WanderRadius, controller.WanderDistance, controller.WanderJitter);
            //    controller.WanderOrigin = location.Item1;
            //    destinations.Add(location.Item2);
            //}
        }
Exemplo n.º 6
0
    public void SpawnAI()
    {
        Vector3 refPos = RefPoint.transform.position;

        for (int i = 0; i < Utils.AICount; i++)
        {
            Player info = app.model.GetAI(i);
            int    r;
            int    c;
            Utils.GetRCFromID(info.CurrentCell, out r, out c);
            GameObject obj = Instantiate <GameObject>(AIPrefab, refPos + new Vector3(r, 0.5f, c), Quaternion.identity);
            obj.name             = "AI" + i;
            obj.transform.parent = BlocksRoot;
            AINavigation ai = obj.GetComponent <AINavigation>();
            ai.Init(info);
            AIPlayers.Add(obj);
        }
    }
Exemplo n.º 7
0
        private bool Look(StateController controller)
        {
            bool b = true;

            List <Transform> possibleTargets;

            if (controller.FleeTarget == null)
            {
                possibleTargets = AINavigation.LocateTargetBlind(controller.transform, controller.ViewSphereRadius, controller.ViewAngle);
            }
            else
            {
                possibleTargets = AINavigation.LocateTargetBlind(controller.transform, controller.ViewSphereRadius);
            }

            for (int i = possibleTargets.Count; i > 0; i--)
            {
                var v = possibleTargets[i - 1].GetComponent <IEater>();

                if (v == null || v.Eats != controller.Eatable.FoodChainPosition || possibleTargets[i - 1].gameObject == controller.gameObject)
                {
                    possibleTargets.RemoveAt(i - 1);
                }
            }

            // CONCLUSION

            if (possibleTargets != null && possibleTargets.Count > 0)
            {
                controller.FleeTarget = possibleTargets[0];
                return(true);
            }

            if (controller.FleeTarget != null && controller.DestinationList.Count == 0)
            {
                return(true);
            }

            controller.FleeTarget = null;
            return(false);
        }
Exemplo n.º 8
0
 public void Setup(HumanSheet humanSheetIn, bool isZombie, GameObject squadDeployment = null)
 {
     this.humanSheet = humanSheetIn;
     this.isZombie   = isZombie;
     animator        = transform.parent.GetComponent <Animator> ();
     stateMachine    = transform.parent.GetComponent <AnimationStateMachine> ();
     stateMachine.Setup(this);
     animationEvents = transform.parent.GetComponent <AnimationEvents> ();
     animationEvents.Setup(this);
     agent      = transform.parent.GetComponent <NavMeshAgent> ();
     navigation = GetComponent <AINavigation> ();
     navigation.Setup(showAgent);
     senses = GetComponent <AISenses> ();
     senses.Setup();
     vision = transform.parent.GetComponentInChildren <AIVision> ();
     vision.Setup(this, showVisionTargets, showNearVision, showMidVision, showFarVision);
     combat = GetComponent <AICombat> ();
     combat.Setup(this);
     if (isZombie)
     {
         //Debug.Log ("zombie perception : " + humanSheet.stats.perception);
         motor         = new ZombieMotor(this, transform.parent.GetComponent <Animator> ());
         behaviourTree = new BTZombie();
     }
     else
     {
         //Debug.Log ("swat perception : " + humanSheet.stats.perception);
         motor         = new HumanMotor(this, transform.parent.GetComponent <Animator> ());
         behaviourTree = new BTSwat();
     }
     behaviourTree.squadDeployment = squadDeployment;
     behaviourTree.Setup(humanSheet, this);
     //motor.UpdateAvatarMask ();
     agent.updatePosition = false;
     //agent.updateRotation = false;
     behaviourTree.StartTree();
 }
        private bool Look(StateController controller)
        {
            var possibleTargets = AINavigation.LocateTargetBlind(controller.transform, controller.ViewSphereRadius, controller.ViewAngle);

            for (int i = possibleTargets.Count; i > 0; i--)
            {
                var v = possibleTargets[i - 1].GetComponent <IEatable>();

                if (v == null || v.FoodChainPosition != controller.Eater.Eats || possibleTargets[i - 1].gameObject == controller.gameObject)
                {
                    possibleTargets.RemoveAt(i - 1);
                }
            }

            if (possibleTargets != null && possibleTargets.Count > 0)
            {
                controller.ChaseTarget = possibleTargets[0];
                return(true);
            }
            else
            {
                return(false);
            }
        }
 void Start()
 {
     _ID           = this.GetComponent <ID>();
     _AINavigation = this.GetComponent <AINavigation>();
 }
Exemplo n.º 11
0
    private void DetectUnit()
    {
        AllTargets = AINavigation.LocateTargetBlind(transform, viewSphereRadius, viewAngle);

        OnTargetsUpdated?.Invoke(AllTargets);
    }
Exemplo n.º 12
0
 void Awake()
 {
     instance    = this;
     pathFinding = GetComponent <AINavigation>();
 }