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; } } }
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; } } }