Пример #1
0
 void OnTriggerExit2D(Collider2D collider)
 {
     if (collider.gameObject.layer == 8)
     {
         if (collider.GetType() == typeof(BoxCollider2D))
         {
             m_MedusaState = MedusaAIState.Wander;
             m_Animator.SetBool("isShooting", false);
             //m_Target = null;
         }
     }
 }
Пример #2
0
    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.layer == 8 && !isDead)
        {
            if (collision.GetType() == typeof(BoxCollider2D))
            {
                m_ASource.PlayOneShot(m_HissSFX);
                m_Target      = collision.gameObject;
                m_MedusaState = MedusaAIState.Shooting;

                //determine angle to fire at
                Vector3    dir     = collision.gameObject.transform.position - transform.position;
                float      angle   = Mathf.Atan2(dir.y, dir.x);
                Quaternion lookRot = Quaternion.Euler(0, 0, Mathf.Rad2Deg * angle);

                Vector3 spawnPos = gameObject.transform.position + new Vector3(0, 1f, 0);

                GameObject Arrow = (GameObject)Instantiate(m_Arrows, spawnPos, lookRot);
                m_ArrowsList.Add(m_Arrows);
                SpriteRenderer renderer  = Arrow.GetComponent <SpriteRenderer>();
                Rigidbody2D    rigidBody = Arrow.GetComponent <Rigidbody2D>();

                if (m_Renderer.flipX)
                {
                    rigidBody.AddForce(dir * ARROW_SPEED, ForceMode2D.Impulse);
                }
                else
                {
                    rigidBody.AddForce(dir * ARROW_SPEED, ForceMode2D.Impulse);
                    renderer.flipX = true;
                }
            }

            else if (collision.GetType() == typeof(CircleCollider2D))
            {
                m_Animator.SetBool("isAttacking", true);
                collision.gameObject.GetComponent <PlayerHealth>().currentHealth -= 3;
            }
        }
    }