Exemplo n.º 1
0
    // Start is called before the first frame update

    private void Awake()
    {
        this.prey = new Prey();
        curState  = PreyStates.FindFood;
        hasFood   = false;
        this.HP   = 2;
    }
Exemplo n.º 2
0
    void Score()
    {
        FieldOfView fieldOfView = GetComponent <FieldOfView>();

        if (fieldOfView.VisibleTargets.Count > 0)
        {
            Transform prey       = fieldOfView.VisibleTargets[0];
            Prey      preyObject = prey.gameObject.GetComponent <Prey>();
            if (preyObject.Unnoticed)
            {
                FirstSpot             = true;
                preyObject.Unnoticed  = false;
                LevelManager.SpotTime = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture);
            }
            if (!SeePrey)
            {
                SpotCount += 1;
                SeePrey    = true;
            }
            else
            {
                _traceTime += Time.deltaTime;
                if (_traceTime >= 1.0f)
                {
                    TraceScore += 1;
                    _traceTime  = .0f;
                }
            }
        }
        else
        {
            SeePrey = false;
        }
    }
Exemplo n.º 3
0
    public void getNewLeader(List <Prey> herd)
    {
        Prey newLeader = GetComponent <LeaderSelectorPrey>().getLeader(herd);

        foreach (Prey p in herd)
        {
            p.setLeader(newLeader.gameObject);
            p.leader = this.gameObject;
            if (p.gameObject.transform.Find("leaderLigth") != null)
            {
                Destroy(p.gameObject.transform.Find("leaderLigth").gameObject);
            }
            p.isLeader = false;
        }
        newLeader.isLeader = true;
        newLeader.setLeader(newLeader.gameObject);
        GameObject brigth = new GameObject("leaderLigth");

        brigth.AddComponent(typeof(Light));                                                             //se le agrega la luz

        brigth.transform.parent = newLeader.gameObject.transform;                                       //Se fija a la entidad


        brigth.light.type = LightType.Spot;                                                                     //Se elije el tipo de luz SPOT

        //Se pone la mira hacia abajo
        brigth.transform.position = brigth.transform.parent.position + new Vector3(0, 1, 0);
        brigth.transform.rotation = Quaternion.Euler(new Vector3(90, 0, 0));

        //Color, Alcance, Dispercion
        brigth.light.color     = Color.white;
        brigth.light.intensity = 2;
        brigth.light.range     = 50F;
        brigth.light.spotAngle = 180f;
    }
Exemplo n.º 4
0
 public static void DoPreySpawned(Prey _prey)
 {
     if (OnPreySpawned != null)
     {
         OnPreySpawned(_prey);
     }
 }
Exemplo n.º 5
0
    public static GameObject loadPrey(SavedPrey preySave)
    {
        // We are essentially building the Predator object from scratch here.
        // GameObject loadedPrey = GameObject.CreatePrimitive(PrimitiveType.Cube);
        GameObject loadedPrey = Resources.Load("Prefabs/Prey") as GameObject;

        // Prey preyScriptRef = loadedPrey.AddComponent<Prey>();
        Prey preyScriptRef = loadedPrey.GetComponent <Prey>();

        // loadedPrey.GetComponent<MeshRenderer>().material = (Resources.Load("Materials/Orange", typeof(Material)) as Material);
        // loadedPrey.tag = "prey";
        // loadedPrey.transform.localScale = new Vector3(1f, 1f, 1f);

        Vector3 pos = new Vector3(preySave.xCoord, preySave.yCoord, preySave.zCoord);

        loadedPrey.transform.position = pos;

        preyScriptRef.waterLevel         = preySave.waterLevel;
        preyScriptRef.nutrientValue      = preySave.nutrientValue;
        preyScriptRef.reproductiveChance = preySave.reproductiveChance;
        preyScriptRef.reproductiveRate   = preySave.reproductiveRate;
        preyScriptRef.awareness          = preySave.awareness;


        preyScriptRef.movementSpeed           = preySave.movementSpeed;
        preyScriptRef.controlSpeed            = preySave.controlSpeed;
        preyScriptRef.consumptionRate         = preySave.consumptionRate;
        preyScriptRef.movementConsumptionRate = preySave.movementConsumptionRate;
        preyScriptRef.nutrientLevel           = preySave.nutrientLevel;

        return(loadedPrey);
    }
Exemplo n.º 6
0
    // Use this for initialization
    void Start()
    {
        goal = Instantiate(goalPrefab) as Goal;
        goal.transform.position = new Vector3(10, 0, 10);
        goal.name = "goal";

        generateJungle();
        int count  = 0;
        int countp = 0;

        while (count < 10)
        {
            prey      = Instantiate(preyPrefab) as Prey;
            prey.goal = goal;
            prey.name = "prey" + count.ToString();
            //print (prey.name);
            count = count + 1;
        }

        while (countp < 2)
        {
            predator      = Instantiate(predatorPrefab) as Predator;
            predator.name = "predator" + countp.ToString();
            countp        = countp + 1;
        }
    }
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.P))
            {
                IUnit prey;
                int   numberOfPrey = 5;
                m_Preys = new IUnit[numberOfPrey];

                for (int i = 0; i < numberOfPrey; i++)
                {
                    prey = new Prey();
                    m_Grid.AddToRandomnPosition(prey);
                    m_Preys[i] = prey;

                    Debug.Log("A prey was spawned @ square: " + m_Preys[i].GetGridPosition());
                }
            }

            if (Input.GetKeyDown(KeyCode.H))
            {
                IUnit predator;
                predator = new Predator();
                m_Grid.AddToRandomnPosition(predator);
                Debug.Log("A predator was spawned @ square: " + predator.GetGridPosition());

                int closest = m_Grid.FindClosest(predator, m_Preys);
                Debug.Log("The closest prey is @ square: " + closest);
            }
        }
    private GameObject seekTarget(GameObject go, Predator predator)
    {
        Transform tr = go.GetComponent <Transform>();
        Move      mv = go.GetComponent <Move>();

        float radius = 5f;

        if (mv.targetObject != null)
        {
            float dist = Vector3.Distance(tr.position, mv.targetObject.transform.position);

            radius = dist;
        }

        Collider2D[] colliders = Physics2D.OverlapCircleAll(tr.position, radius, LayerMask.GetMask("Ignore Raycast"));

        GameObject closestTarget = null;

        if (colliders.Length > 0)
        {
            float minDist = radius;

            foreach (Collider2D collider in colliders)
            {
                GameObject collidedGO = collider.gameObject;

                if (collidedGO == go)
                {
                    continue;
                }
                else
                {
                    if (_preysGO.contains(collidedGO.GetInstanceID()))
                    {
                        Prey prey = collidedGO.GetComponent <Prey>();

                        if (predator.myPreys.Contains(prey.myType))
                        {
                            float dist = Vector3.Distance(tr.position, collidedGO.transform.position);

                            if (dist < minDist)
                            {
                                if (!collidedGO.CompareTag("Targeted"))
                                {
                                    if (!_targetedPreysGO.contains(collidedGO.GetInstanceID()))
                                    {
                                        minDist       = dist;
                                        closestTarget = collidedGO;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        return(closestTarget);
    }
Exemplo n.º 9
0
 public Form1()
 {
     InitializeComponent();
     chanSubscriber = new Prey(subscriber.Left, subscriber.Top, subscriber.Width);
     chanel         = new Channel <Point>();
     chanel.AddSubscriber(chanSubscriber);
     hunt = new Hunter <Point>(chanel);
 }
Exemplo n.º 10
0
    void OnTriggerEnter(Collider info)
    {
        if (info.name == "Player")
        {
            preyScript = this.GetComponent <Prey> ();

            preyScript.setScared(true);
        }
    }
Exemplo n.º 11
0
 // Update is called once per frame
 void Update()
 {
     if (addPrey > 0)
     {
         prey      = Instantiate(preyPrefab) as Prey;
         prey.goal = goal;
         addPrey   = addPrey - 1;
     }
 }
Exemplo n.º 12
0
        /// <summary>
        /// Muere el agente
        /// </summary>
        protected override void Die()
        {
            state = States.Die;
            GetComponent <DinasorsAnimationCorrector>().die();
            defense = 0;
            if (gameObject.transform.Find("leaderLigth") != null)
            {
                Destroy(gameObject.transform.Find("leaderLigth").gameObject);
            }

            if (herd.Contains(gameObject))
            {
                herd.Remove(gameObject);
            }
            foreach (GameObject go in herd)
            {
                go.GetComponent <DinoObject>().herd.Remove(gameObject);
            }
            if (isLeader == true)
            {
                Prey     p  = gameObject.GetComponent <Prey>();
                Predator pr = gameObject.GetComponent <Predator>();
                if (p != null)
                {
                    List <Prey> listHerd = new List <Prey>();
                    foreach (GameObject go in p.herd)
                    {
                        listHerd.Add(go.GetComponent <Prey>());
                    }
                    if (listHerd.Count > 0)
                    {
                        p.getNewLeader(listHerd);
                    }
                    else
                    {
                        p.isLeader = false;
                    }
                }
                if (pr != null)
                {
                    List <Predator> listHerd = new List <Predator>();
                    foreach (GameObject go in pr.herd)
                    {
                        listHerd.Add(go.GetComponent <Predator>());
                    }
                    if (listHerd.Count > 0)
                    {
                        pr.getNewLeader(listHerd);
                    }
                    else
                    {
                        pr.isLeader = false;
                    }
                }
            }
        }
Exemplo n.º 13
0
 void Awake()
 {
     for (int i = 0; i < herdSize; ++i)
     {
         Prey temp = Instantiate(preyPrefab, transform.position + offset, Quaternion.identity) as Prey;
         temp.transform.parent = transform;
         herd.Add(temp);
         offset += new Vector3(0, 0, 2);
     }
 }
Exemplo n.º 14
0
Arquivo: Game.cs Projeto: leleedev/ai
    public Prey AddPrey(Vector2Int pos)
    {
        GameObject preyObject    = GameObject.Instantiate(preyPrefab);
        Prey       preyComponent = preyObject.GetComponent <Prey>();

        map.Set(pos, preyObject);
        preyComponent.Initialize(pos, map, this);

        preys.Add(preyComponent);
        return(preyComponent);
    }
Exemplo n.º 15
0
 public void chase(GameObject target)
 {
     if (!chasing)
     {
         Debug.Log("chasing " + target);
         thePrey = target.GetComponent <Prey>();
         chasing = true;
         GetComponent <Mob>().run();
         StartCoroutine("tryToCatch", target);
     }
 }
    IEnumerator EnableAttackingEnemy(Prey enemy)
    {
        yield return(new WaitForSeconds(20));

        int sameEnemyIndex = enemies.FindIndex(x => x.obj == enemy.obj);

        if (sameEnemyIndex >= 0)
        {
            enemies[sameEnemyIndex].attackable = true;
        }
    }
Exemplo n.º 17
0
        public void SubscriptionTest_CallNotifyAll_SubLocationChanged(Point preyOldLocation, Point hunterCloseLocation)
        {
            Channel <Point> channel = new Channel <Point>();
            Hunter <Point>  hunter  = new Hunter <Point>(channel);
            Prey            prey    = new Prey(preyOldLocation, 10);

            channel.AddSubscriber(prey);

            hunter.Content = hunterCloseLocation;

            Assert.AreNotEqual(preyOldLocation, prey.SubContent);
        }
Exemplo n.º 18
0
        public void SubscriptionTest_CallNotifyAll_EqualPubAndSubContent(Point hunterLocation)
        {
            Channel <Point> channel = new Channel <Point>();
            Hunter <Point>  hunter  = new Hunter <Point>(channel);
            Prey            prey    = new Prey(100, 500, 10);

            channel.AddSubscriber(prey);

            hunter.Content = hunterLocation;

            Assert.AreEqual(hunter.Content, prey.PubContent);
        }
Exemplo n.º 19
0
        private void Kill()
        {
            _isAlive = false;

            Prey prey = _owner.Bird as Prey;

            if (null != prey)
            {
                prey.ShowBlood(true);
            }

            PlayerManager.Instance.KillPlayer(_owner);
        }
Exemplo n.º 20
0
        public void SubscriptionTest_CallNotifyAll_SubLocationNotChanged(Point hunterLocation)
        {
            Channel <Point> channel     = new Channel <Point>();
            Hunter <Point>  hunter      = new Hunter <Point>(channel);
            Point           oldLocation = new Point(100, 50);
            Prey            prey        = new Prey(oldLocation, 10);

            channel.AddSubscriber(prey);

            hunter.Content = new Point(100, 150);

            Assert.AreEqual(oldLocation, prey.SubContent);
        }
Exemplo n.º 21
0
    protected override void ExecuteTurn()
    {
        List <Vector2Int> adjacent = predator.map.GetAdjacentPositions(predator.GetTilemapPosition(), true);

        foreach (Vector2Int position in adjacent)
        {
            Prey prey = predator.map.GetObjectAtPosition(position)?.GetComponent <Prey>();
            if (prey != null)
            {
                predator.Attack(position);
                return;
            }
        }
    }
Exemplo n.º 22
0
    //steer towards flock
    private Vector3 Cohere(Prey b)
    {
        Vector3 centerOfMass = Vector3.zero;

        foreach (Prey p in herdManager.herd)
        {
            if (p != b)
            {
                centerOfMass += p.transform.position;
            }
        }

        centerOfMass = centerOfMass / (herdManager.herdSize - 1);
        return((centerOfMass - b.transform.position) / 100);
    }
Exemplo n.º 23
0
    //move towards general heading
    private Vector3 Align(Prey b)
    {
        Vector3 velocity = Vector3.zero;

        foreach (Prey p in herdManager.herd)
        {
            if (p != b)
            {
                velocity += p.velocity;
            }
        }
        velocity = velocity / (herdManager.herdSize - 1);

        return((velocity - b.velocity) / 8);
    }
Exemplo n.º 24
0
 private void tryEat()
 {
     for (int i = 0; i < PredatorList.Count; i++)
     {
         Predator predator = PredatorList[i];
         for (int j = 0; j < PreyList.Count; j++)
         {
             Prey   prey     = PreyList[j];
             double distance = Math.Sqrt(Math.Pow(prey.position.X - predator.position.X, 2) + Math.Pow(prey.position.Y - predator.position.Y, 2));
             if (distance <= 2 * radius)
             {
                 PreyList.RemoveAt(j);
                 predator.food = food;
             }
         }
     }
 }
    // Use to process your families.
    protected override void onProcess(int familiesUpdateCount)
    {
        foreach (GameObject go in _triggeredGO)
        {
            Transform   tr       = go.GetComponent <Transform>();
            Triggered2D t2d      = go.GetComponent <Triggered2D>();
            Predator    predator = go.GetComponent <Predator>();
            Block       block    = go.GetComponent <Block>();

            block.timeSinceLastEffect += Time.deltaTime;
            bool effectApplied = false;

            //Debug.Log(go.name + " " + t2d.Targets.Length);

            foreach (GameObject target in t2d.Targets)
            {
                if (_preysGO.contains(target.GetInstanceID()))
                {
                    Prey prey = target.GetComponent <Prey>();

                    if (predator.myPreys.Contains(prey.myType))
                    {
                        //TODO slow the target
                        Move      mv         = target.GetComponent <Move>();
                        Transform collidedTr = target.GetComponent <Transform>();

                        float dist = Vector3.Distance(collidedTr.position, tr.position);

                        if (block.timeSinceLastEffect >= block.effectFreq)
                        {
                            //float f = (float) 0.5f * (1/dist);
                            float f = 0.5f;
                            mv.speedModifiers.Add(new SpeedModifier(f, false, 2f));
                            effectApplied = true;
                        }
                    }
                }
            }

            if (effectApplied)
            {
                block.timeSinceLastEffect = 0f;
            }
        }
    }
Exemplo n.º 26
0
    /// <summary>
    /// Checks if the Player has a torch out, if it has lost it's target and if it is close enough to attack.
    /// Then swaps state depending on what condition is true
    /// </summary>
    public override void Update()
    {
        AIagent.SetDestination(Prey.transform.position);

        if (PlayerHasFire)
        {
            owner.TransitionTo <AlphaFleeState>();
        }
        else if (!PreyLocated)
        {
            owner.TransitionTo <AlphaPatrolState>();
        }
        else if (CheckRemainingDistance(Prey.transform.position, 3f))
        {
            if (Prey.gameObject.tag == "Cow")
            {
                Prey.GetComponent <CowSM>().AttackTheCow((int)Damage);
            }
            else if (Prey.gameObject.tag == "Player")
            {
                Prey.GetComponent <PlayerStateMashine>().GetAttacked((int)Damage);
                DamageEventInfo dei = new DamageEventInfo {
                    damage = Damage
                };
                EventHandeler.Current.FireEvent(EventHandeler.EVENT_TYPE.Damage, dei);
                Debug.Log("Damage is done by wolf, dmg " + Damage);
            }
            if (Prey == null)
            {
                PreyLocated = false;
            }
            owner.TransitionTo <AlphaObserveState>();
        }
        base.Update();

        //check it out

        /*
         * NavMeshPath path =null;
         * NavMesh.CalculatePath(Vector3.zero, Vector3.up, NavMesh.AllAreas, path);
         * path.corners.ToList().ForEach(p => Position);
         */

        setVelocity();
    }
Exemplo n.º 27
0
        private void fillHerd(Prey p, int herd, Dictionary <int, int> preyVisited)
        {
            if (preyVisited.ContainsKey(p.GetInstanceID()))
            {
                return;
            }
            preyVisited.Add(p.GetInstanceID(), herd);

            //Por cada objeto encontrado revisa si es un arbol y añada su cantidad de comida
            for (int i = 0; i < elements.Length; i++)
            {
                Prey vecino = elements[i];
                if (distance(p.transform.position, vecino.transform.position) <= p.comRange * p.comRange)
                {
                    fillHerd(vecino, herd, preyVisited);
                }
            }
        }
Exemplo n.º 28
0
 void CheckForPrey()
 {
     if (TargetPrey == null)
     {
         Vector3    forward   = transform.forward;
         Vector2Int direction = new Vector2Int(Mathf.RoundToInt(forward.x), Mathf.RoundToInt(Mathf.RoundToInt(forward.z)));
         Vector2Int pos       = GetTilemapPosition();
         for (int i = 1; i <= 5; i++)
         {
             Prey prey = map.GetObjectAtPosition(pos + direction * i)?.GetComponent <Prey>();
             if (prey != null)
             {
                 TargetPrey = prey;
                 return;
             }
         }
     }
 }
Exemplo n.º 29
0
Arquivo: Game.cs Projeto: leleedev/ai
 void ExecuteTurn()
 {
     predator.ExecuteTurn();
     for (int i = preys.Count - 1; i >= 0; i--)
     {
         Prey prey = preys[i];
         if (prey != null)
         {
             prey.ExecuteTurn();
         }
         else
         {
             preys.RemoveAt(i);
         }
     }
     preysLeft = preys.Count;
     currentTurn++;
 }
Exemplo n.º 30
0
    private void RecordFrame()
    {
        if (Predator1 != null)
        {
            RecordPredatorFrame(Predator1.gameObject);
        }
        else
        {
            Predator1 = GameObject.Find("/Canvas/Predator1").GetComponent <Predator>();
        }
        if (Predator2 != null)
        {
            RecordPredatorFrame(Predator2.gameObject);
        }
        else
        {
            Predator2 = GameObject.Find("/Canvas/Predator2").GetComponent <Predator>();
        }
        if (Predator3 != null)
        {
            RecordPredatorFrame(Predator3.gameObject);
        }
        else
        {
            Predator3 = GameObject.Find("/Canvas/Predator3").GetComponent <Predator>();
        }
        if (Predator4 != null)
        {
            RecordPredatorFrame(Predator4.gameObject);
        }
        else
        {
            Predator4 = GameObject.Find("/Canvas/Predator4").GetComponent <Predator>();
        }

        if (Prey != null)
        {
            RecordPreyFrame(Prey.gameObject);
        }
        else
        {
            Prey = GameObject.Find("/Canvas/Prey").GetComponent <Prey>();
        }
    }