protected virtual void Awake() { _transform = transform; _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); _aiBodyPartLayer = LayerMask.NameToLayer("AI Body Part"); if (GameSceneManager.instance != null) { if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } if (_rootBone != null) { Rigidbody[] bodies = _rootBone.GetComponentsInChildren <Rigidbody>(); foreach (Rigidbody bodyPart in bodies) { if (bodyPart != null && bodyPart.gameObject.layer == _aiBodyPartLayer) { _bodyPrats.Add(bodyPart); GameSceneManager.instance.RegisterAIStateMachine(bodyPart.GetInstanceID(), this); } } } }
void OnTriggerEnter(Collider other) { Debug.Log("Collision"); if (other.tag == "Boundary" || other.tag == "Enemy" || other.tag == "EnemyA" || other.tag == "EnemyB" || other.tag == "Shield") { return; } var colliderId = GetComponent <Collider>().GetInstanceID(); if (leftHit >= 2 && rightHit >= 2) { // TODO hide shield if (colliderId == coreCollider.GetInstanceID()) { // hit core Destroy(other.gameObject); if (++hit >= 15) { Destroy(gameObject); if (explosion != null) { Instantiate(explosion, transform.position, transform.rotation); } } else { // show effect Debug.Log("Core was hit: " + hit); } } else { Debug.Log("Only core should be hit!"); } timer -= Time.deltaTime; if (timer <= 0) { leftHit = 0; rightHit = 0; timer = 5.0f; } } else { if (colliderId == leftCollider.GetInstanceID()) { Destroy(other.gameObject); leftHit++; Debug.Log("Left was hit: " + leftHit); } else if (colliderId == rightCollider.GetInstanceID()) { Destroy(other.gameObject); rightHit++; Debug.Log("Right was hit: " + rightHit); } } }
// ----------------------------------------------------------------- // Name : Awake // Desc : Cache Components // ----------------------------------------------------------------- protected virtual void Awake() { // Cache all frequently accessed components _transform = transform; _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); // Cache Audio Source Reference for Layered AI Audio AudioSource audioSource = GetComponent <AudioSource>(); // Get BodyPart Layer _aiBodyPartLayer = LayerMask.NameToLayer("AI Body Part"); // Do we have a valid Game Scene Manager if (GameSceneManager.instance != null) { // Register State Machines with Scene Database if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } if (_rootBone != null) { Rigidbody[] bodies = _rootBone.GetComponentsInChildren <Rigidbody>(); foreach (Rigidbody bodyPart in bodies) { if (bodyPart != null && bodyPart.gameObject.layer == _aiBodyPartLayer) { _bodyParts.Add(bodyPart); GameSceneManager.instance.RegisterAIStateMachine(bodyPart.GetInstanceID(), this); } } } // Register the Layered Audio Source if (_animator && audioSource && AudioManager.instance) { _layeredAudioSource = AudioManager.instance.RegisterLayeredAudioSource(audioSource, _animator.layerCount); } }
protected virtual void Awake() { // Cache all frequently accessed components _transform = transform; _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); AudioSource audioSource = GetComponent <AudioSource>(); // Register the instance IDs of all the agent's collider and sensor collider if (GameSceneManager.instance != null) { if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } // Get layers _aiBodyPartLayer = LayerMask.NameToLayer("AI Body Part"); // Adding all our body parts to the our body parts list (To be able to change them to kinematic or non kinematic state if (_rootBone != null) { Rigidbody[] bodies = _rootBone.GetComponentsInChildren <Rigidbody>(); foreach (Rigidbody bodyPart in bodies) { if (bodyPart != null && bodyPart.gameObject.layer == _aiBodyPartLayer) { _bodyParts.Add(bodyPart); GameSceneManager.instance.RegisterAIStateMachine(bodyPart.GetInstanceID(), this); } } } if (_animator && audioSource && AudioManager.instance) { _layeredAudioSource = AudioManager.instance.RegisterLayeredAudioSource(audioSource, _animator.layerCount); } }
protected virtual void Awake() { _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); if (GameSceneManager.instance != null) { // Register State Machines with Scene Database if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } }
public virtual void Awake() { _transform = transform; _animator = GetComponent <Animator>(); _agent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); if (GameSceneManager.instance != null) { if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } }
protected virtual void Awake() { // 缓存所有常用的 components _ani = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); if (GameSceneManager.Instance != null) { if (_collider) { GameSceneManager.Instance.RegisterAIStateMachines(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.Instance.RegisterAIStateMachines(_sensorTrigger.GetInstanceID(), this); } } }
protected virtual void Awake() { //为组件去赋值 _anim = GetComponent <Animator>(); _agent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); if (GameScenseManager.Instance != null) { //每一个物体的InstanceID在场景中是唯一的 //注册到 [游戏场景管理] if (_targetColiiderTrigger) { GameScenseManager.Instance.RegisterAiStateMachine(_targetColiiderTrigger.GetInstanceID(), this); } if (_sensorColiiderTrigger) { GameScenseManager.Instance.RegisterAiStateMachine(_sensorColiiderTrigger.GetInstanceID(), this); } } }
// ----------------------------------------------------------------- // Name : Awake // Desc : Cache Components // ----------------------------------------------------------------- protected virtual void Awake() { // Cache all frequently accessed components _transform = transform; _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); // Do we have a valid Game Scene Manager if (GameSceneManager.instance != null) { // Register State Machines with Scene Database if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } }