/// <summary> /// smoothly aims at target while firing the shooter /// </summary> protected virtual void AttackTarget() { // smoothly aim at target if (m_TargetCollider == null) { m_TargetCollider = m_Target.GetComponent <Collider>(); } Vector3 dir; if (m_TargetCollider != null) { dir = (m_TargetCollider.bounds.center - m_Transform.position); } else { dir = (m_Target.transform.position - m_Transform.position); } m_Transform.rotation = Quaternion.RotateTowards(m_Transform.rotation, Quaternion.LookRotation(dir), Time.deltaTime * AimSpeed); // fire the shooter if (Mathf.Abs(vp_3DUtility.LookAtAngleHorizontal(m_Transform.position, m_Transform.forward, m_Target.position)) < FireAngle) { m_Shooter.TryFire(); } }
/// <summary> /// smoothly aims at target while firing the shooter /// </summary> void AttackTarget() { // smoothly aim at target Vector3 dir = m_Target.position - m_Transform.position; Quaternion targetRotation = Quaternion.LookRotation(dir); m_Transform.rotation = Quaternion.RotateTowards(m_Transform.rotation, targetRotation, Time.deltaTime * AimSpeed); // fire the shooter m_Shooter.TryFire(); }
/// <summary> /// smoothly aims at target while firing the shooter /// </summary> void AttackTarget() { // smoothly aim at target Vector3 dir = (m_Target.GetComponent <Collider>().bounds.center - m_Transform.position); Quaternion targetRotation = Quaternion.LookRotation(dir); m_Transform.rotation = Quaternion.RotateTowards(m_Transform.rotation, targetRotation, Time.deltaTime * AimSpeed); // fire the shooter m_Shooter.TryFire(); }