// Start is called before the first frame update private void Awake() { this.prey = new Prey(); curState = PreyStates.FindFood; hasFood = false; this.HP = 2; }
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; } }
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; }
public static void DoPreySpawned(Prey _prey) { if (OnPreySpawned != null) { OnPreySpawned(_prey); } }
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); }
// 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); }
public Form1() { InitializeComponent(); chanSubscriber = new Prey(subscriber.Left, subscriber.Top, subscriber.Width); chanel = new Channel <Point>(); chanel.AddSubscriber(chanSubscriber); hunt = new Hunter <Point>(chanel); }
void OnTriggerEnter(Collider info) { if (info.name == "Player") { preyScript = this.GetComponent <Prey> (); preyScript.setScared(true); } }
// Update is called once per frame void Update() { if (addPrey > 0) { prey = Instantiate(preyPrefab) as Prey; prey.goal = goal; addPrey = addPrey - 1; } }
/// <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; } } } }
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); } }
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); }
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; } }
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); }
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); }
private void Kill() { _isAlive = false; Prey prey = _owner.Bird as Prey; if (null != prey) { prey.ShowBlood(true); } PlayerManager.Instance.KillPlayer(_owner); }
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); }
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; } } }
//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); }
//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); }
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; } } }
/// <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(); }
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); } } }
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; } } } }
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++; }
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>(); } }