public void Shoot() { AkSoundEngine.PostEvent("hunter_rifle", gameObject); Vector3 position = agent.transform.position; Vector3 direction = agent.transform.forward; RaycastHit hit; if (Physics.Raycast(position, direction, out hit, shootingRange, shootingMask)) { Debug.Log(hit.collider.gameObject); AIAgent agent = hit.collider.gameObject.GetComponent <AIAgent>(); if (agent != null) { agent.Kill(); } else { Cannibal cannibal = hit.collider.gameObject.GetComponentInParent <Cannibal>(); if (cannibal != null) { cannibal.Kill(); } else { Bush bush = hit.collider.gameObject.GetComponent <Bush>(); if (bush != null) { Debug.Log("Killing cannibals in bush:" + bush); bush.KillACannibal(); } } } } }
protected override void OnExecute() { GameObject t = target.value; Vector3 planarDir = (t.transform.position - agent.transform.position); planarDir.y = 0; planarDir = planarDir.normalized; float angle = Vector3.Angle(agent.transform.forward, planarDir); if (Vector3.Distance(t.transform.position, agent.transform.position) < distance.value && angle < Mathf.Abs(maxAngle.value)) { AIAgent agent = t.GetComponent <AIAgent>(); if (agent != null) { agent.Kill(); } else { Cannibal cannibal = t.GetComponentInParent <Cannibal>(); if (cannibal != null) { cannibal.Kill(); } else { Debug.LogError("Cible non valide"); } } } EndAction(); }
protected override void OnExecute() { Vector3 position = agent.transform.position; Vector3 direction = agent.transform.forward; RaycastHit hit; if (Physics.Raycast(position, direction, out hit, distance.value, mask.value)) { Debug.Log(hit.collider.gameObject); AI.AIAgent agent = hit.collider.gameObject.GetComponent <AI.AIAgent>(); if (agent != null) { agent.Kill(); } else { Cannibal cannibal = hit.collider.gameObject.GetComponentInParent <Cannibal>(); if (cannibal != null) { cannibal.Kill(); } else { Bush bush = hit.collider.gameObject.GetComponent <Bush>(); if (bush != null) { bush.KillACannibal(); } } } } EndAction(); }