Example #1
0
    // Update is called once per frame
    void Update()
    {
        try
        {
            if (queuedLayers == null || queuedLayers.Count == 0)
            {
                Debug.Log("Fixed");
                queuedLayers.Add(3);
            }
            else
            {
                // Debug.Log("target of" + this.gameObject.name + "is " + animalProperties.target + "layer " + queuedLayers[0]);
                ScreenWrap();
                queuedLayers.Sort();
                //Debug.Log(queuedLayers.Count);
                switch (queuedLayers[0])
                {
                case 0:    //flee
                    //Debug.Log("Flee");
                    animalProperties.isRunning = true;
                    steeringBehaviour.TargetAnimal();
                    steeringBehaviour.FleeFromTarget(animalProperties.target);
                    steeringBehaviour.MoveAnimal();
                    break;

                case 1:    //attack
                    //Debug.Log("attack");
                    steeringBehaviour.TargetAnimal();
                    steeringBehaviour.SeekToTarget(animalProperties.target);
                    steeringBehaviour.MoveAnimal();
                    break;

                case 2:    //seek food
                    //Debug.Log("seek and eat");
                    steeringBehaviour.getFood();
                    steeringBehaviour.SeekToTarget(animalProperties.target);
                    steeringBehaviour.MoveAnimal();
                    break;

                case 3:    //wander
                    // Debug.Log("wander");
                    animalProperties.target = steeringBehaviour.WanderRandom();
                    steeringBehaviour.SeekToTarget(animalProperties.target);
                    steeringBehaviour.MoveAnimal();
                    break;
                }

                queuedLayers.RemoveAt(0);
            }
        }
        catch (System.IndexOutOfRangeException e)
        {
            //System.Console.WriteLine(e.Message);
            // Set IndexOutOfRangeException to the new exception's InnerException.
            throw new System.ArgumentOutOfRangeException("index parameter is out of range.", e);
        }
    }