Example #1
0
    /// <summary>
    /// openfire function
    /// </summary>
    public void OpenfireEvent()
    {
        RaycastHit hitInfo;

        bool ifHitSomething = Physics.SphereCast(transform.position, m_BoxCollider.bounds.size.x,
                                                 this.transform.forward, out hitInfo, this.attackRange);

        //if the ai tank in player attack range,we reduce the life value of ai tank
        if (ifHitSomething == true && hitInfo.transform.CompareTag("AITank"))
        {
            LifeSystem lifeSystem = hitInfo.transform.GetComponent <LifeSystem>();

            lifeSystem.ChangeCurrentLifeValue(-10.0f);
        }
    }
    public override void OnUpdate()
    {
        //AI originalRotation
        Quaternion originalRotation = this.m_AIController.transform.rotation;

        //AI targetRotation
        Quaternion targetRotation = Quaternion.LookRotation(m_AttackTarget.transform.position - this.m_AIController.transform.position);

        //turn to the attack target
        this.m_AIController.transform.rotation = Quaternion.Slerp(originalRotation, targetRotation, Time.deltaTime * m_TurrentRotateSpeed);

        RaycastHit hitInfo;

        //detect if the gun of AI has aimed the attack target
        bool ifHitSomething = Physics.SphereCast(this.m_AIController.transform.position, m_NavMeshAgent.radius,
                                                 this.m_AIController.transform.forward, out hitInfo, this.m_AIController.sightRange);

        //if AI has aimed the attack target
        if (ifHitSomething == true && hitInfo.transform.CompareTag("PlayerTank"))
        {
            if (Time.time > m_AttackIntervalTimer)
            {
                m_AttackIntervalTimer = Time.time + m_AttackInterval;

                //play the openfire animation
                m_Animator.SetTrigger("openfire");

                //if attack target has the life system,reduce it life value
                LifeSystem lifeSystem = hitInfo.transform.GetComponent <LifeSystem>();

                if (lifeSystem != null)
                {
                    lifeSystem.ChangeCurrentLifeValue(-10.0f);
                }
            }
        }
    }