private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "EnemyTempPlatformProbe") { EnemyCombatManager _enemy = other.gameObject.transform.parent.GetComponent <EnemyCombatManager>(); if (_enemy != null) { Debug.Log("Probed enemy combat manager"); if (!PlatformAppears) { NavMeshAgent _agent = _enemy.gameObject.GetComponent <NavMeshAgent>(); Rigidbody _body = _enemy.gameObject.GetComponent <Rigidbody>(); if (_agent != null && _body != null) { if (_agent.enabled && _body.isKinematic) { _enemy.TriggerGivePhysControlOnAll(true); } } } OverlappingNPCs.Add(_enemy); } } }
private void OnTriggerExit(Collider other) { if (other.gameObject.tag == "EnemyTempPlatformProbe") { EnemyCombatManager _enemy = other.gameObject.transform.parent.GetComponent <EnemyCombatManager>(); if (_enemy != null) { OverlappingNPCs.Remove(_enemy); } } }
private void OnTriggerEnter(Collider other) { Debug.Log("Stomped trigger enter " + other.gameObject + " with " + this.transform.forward.normalized * -1 * StompForce); if (other.gameObject.tag == "EnemyHat") { EnemyCombatManager _enemyCombatManager = other.transform.parent.GetComponent <EnemyCombatManager>(); if (_enemyCombatManager != null) { _enemyCombatManager.ReceiveStomp(this.transform.forward.normalized * -1 * StompForce, 0.5f); //Debug.Log("Stomped " + other.gameObject + " with " + this.transform.forward.normalized * -1 * StompForce); } } }
/// <summary> /// Author: Feiyang /// Attack Logic /// </summary> /// <param name="other"></param> private void OnTriggerStay(Collider other) { // when invicible, attack every enemy that is colliding with the player if (IsAttacking || IsInvicible) { EnemyCombatManager _enemyCombatManager = other.gameObject.GetComponent<EnemyCombatManager>(); if (_enemyCombatManager != null && CurrentAttackMotion != null) { // calculate regular attack Vector3 _AttackVector = this.transform.forward.normalized * CurrentAttackMotion.Force; //Debug.Log("Trigger stay Attacked with " + _AttackVector); _enemyCombatManager.ReceiveAttack(_AttackVector, CurrentAttackMotion.KnockBackTime); StopAttack(); } } }
/// <summary> /// Author: Feiyang /// Initiate Smash /// </summary> public void Smash() { Collider[] colliders = Physics.OverlapSphere(transform.position, SmashRadius); foreach (Collider _nearby in colliders) { GameObject _nearbyObjects = _nearby.gameObject; EnemyCombatManager _enemyCombatManager = _nearbyObjects.GetComponent<EnemyCombatManager>(); if (_enemyCombatManager != null) { _enemyCombatManager.ReceiveSmash(DefaultSmashTime, DefaultSmashForce, this.transform.position, SmashRadius); } } }
void Start() { controller = GetComponent<NavMeshAgent>(); enemyAnimation = GetComponent<Animator>(); combatManager = GetComponent<EnemyCombatManager>(); photonView = GetComponent<PhotonView>(); obstacle = GetComponent<NavMeshObstacle>(); controller.avoidancePriority = Random.Range(0, 99); //player = GameObject.FindGameObjectWithTag("Player"); initialPosition = transform.position; controller.stoppingDistance = chaseStopDistance; if(PhotonNetwork.isMasterClient) { StartCoroutine(Movement()); } }