public void DetectTarget(IATarget target) { Vector3 dir = target.position - trsf.position; if (Vector3.Angle(trsf.forward, dir) < data.halfFOV) { RaycastHit hit; if (Physics.Raycast(trsf.position, dir, out hit, data.range, data.layer.value)) { if (hit.collider.gameObject.transform == iaBase.target.parent) { detected = true; } else { detected = false; } } else { detected = false; } } else { detected = false; } }
public void SetUpIA() { renderers = GetComponentsInChildren <Renderer>(); players = GameManager.instance.players; trsf = transform; trsf.SetParent(GameManager.instance.mobsGroup); eyes = GetComponentsInChildren <IAEye>(); if (eyes.Length == 0) { blind = true; } else { blind = false; for (int i = 0; i < eyes.Length; i++) { eyes[i].iaBase = this; eyes[i].SetUpIA(); } } iaMovement = GetComponentInChildren <IAMovement>(); iaMovement.navMeshAgent = GetComponent <NavMeshAgent>(); iaMovement.SetUpIA(); iaBody = GetComponentInChildren <IABody>(); iaBody.orientationSpeed = iaMovement.data.orientationSpeed; iaBody.SetUpIA(); iaWeapons = GetComponentsInChildren <IAWeapon>(); for (int i = 0; i < iaWeapons.Length; i++) { iaWeapons[i].SetUpIA(); } rgdBody = GetComponent <Rigidbody>(); damageable = GetComponentInChildren <Damageable>(); damageable.maxLifePoint = data.maxLifePoint; moveSoundSource = GetComponent <AudioSource>(); collectableGenerator = GetComponent <CollectableGenerator>(); target = players[0].iaTarget; iaBody.target = target; SetUpPools(); setuped = true; StartCoroutine(SpawnCoroutine()); }