Exemplo n.º 1
0
    void FixedUpdate()
    {
        if (m_BaseBehavior == true)
        {
            //if (target != null && target.tag == "Player")
            if (myRadar.GetTarget())
            {
                m_ToTarget = myRadar.GetTarget().transform.position - m_transform.position;
                // The step size is equal to speed times frame time.
                var step   = m_turnRate * Time.deltaTime;
                var newDir = Vector3.RotateTowards(m_transform.forward, m_ToTarget, step, 0.0f);
                //Debug.DrawRay(transform.position, newDir, Color.red);
                // Move our position a step closer to the target.
                m_transform.rotation = Quaternion.LookRotation(newDir);

                m_rigidbody.velocity = m_transform.forward * m_speed;
            }
        }
        else
        {
            //If there is no target it does a base patrol;
            m_transform.Rotate(0f, m_turnRate, 0f);
            m_rigidbody.velocity = m_transform.forward * m_speed;
        }
    }
Exemplo n.º 2
0
    void Update()
    {
        if (m_heatlh <= 0)
        {
            //Event_Manager.TriggerEvent("EnemyDestroyed");
            Event_System.EnemyDestroyed(this.gameObject);
            Object death = Instantiate(m_Death, m_rigidbody.position, m_rigidbody.rotation);
            Destroy(death, 1.0f);
            Destroy(gameObject);
        }

        if (myRadar.GetTarget())
        {
            //Checks if the Player is infront of the enemy and if they're in a sutible range to attack
            var m_HitInfo = new RaycastHit();
            if (Physics.Raycast(m_transform.position, m_transform.forward, out m_HitInfo, m_fireRange) == true)
            {
                if (m_HitInfo.collider.tag == "Player")
                {
                    for (int i = 0; i < m_lasers.Length; ++i)
                    {
                        m_lasers [i].Fire();
                    }
                }
            }
        }
    }