/// <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();
    }
Exemple #3
0
    /// <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();
    }