private void OnEnable() { m_safetyEndTimer = 0.0f; m_material = GetComponent <Renderer>().material; m_initialColor = m_material.color; m_material.color = Color.yellow; m_rigidbody = GetComponent <Rigidbody>(); m_agent = GetComponent <NavMeshAgent>(); m_agent.enabled = false; m_initialSpeed = m_agent.speed; Collider[] colliders = Physics.OverlapSphere(transform.position, m_sightRadius); if (colliders == null || colliders.Length == 0) { m_currentState = TackleAttackPerception.EndAttack; m_directionAttack = Vector3.zero; return; } Collider playerCollider = colliders.FirstOrDefault(x => x.gameObject.tag == Constants.Tags.Player); if (playerCollider == null) { m_currentState = TackleAttackPerception.EndAttack; m_directionAttack = Vector3.zero; } else { m_directionAttack = playerCollider.transform.position - transform.position; m_directionAttack.y = 0.0f; m_directionAttack.Normalize(); m_currentState = TackleAttackPerception.Attacking; } }
private void Update() { m_rigidbody.velocity = m_directionAttack * m_attackPower; m_safetyEndTimer += Time.deltaTime; if (m_safetyEndTimer >= m_endTime) { m_currentState = TackleAttackPerception.EndAttack; } }