private bool HitSomething() { RaycastHit2D[] hits = Physics2D.BoxCastAll(gameObject.transform.position, new Vector2(m_MeleeRange, m_MeleeRange), 0f, m_PlayerController.m_LookingDirection, m_MeleeRange / 2, LayerMask.GetMask("Enemy", "MonsterThrowable")); ArrayList uniqueEnemies = FilterDuplicateColliders(hits); foreach (GameObject enemy in uniqueEnemies) { if (enemy.tag == "Enemy") { NPCControllerAbstract npcController = enemy.GetComponentInParent <NPCControllerAbstract>(); npcController.Attacked(m_MeleeStrength, m_PlayerManager); npcController.m_PlayerManager = m_PlayerManager; } else if (enemy.tag == "MonsterThrowable") { MonsterThrowableController throwableController = enemy.GetComponent <MonsterThrowableController>(); throwableController.OnMeleeHit(); throwableController.m_PlayerManager = m_PlayerManager; m_PlayerManager.m_PlayerFXManager.OnThrowableHitSoundFX(); } } if (uniqueEnemies.Count > 0) { return(true); } else { return(false); } }
private IEnumerator Throw() { if (!throwing) { throwing = true; yield return(new WaitForSeconds(1f)); // give the player 1 second to prepare while (m_LockedOnPlayer && isAlive) { while (m_PlayerManager.m_IsImmune) { yield return(new WaitForEndOfFrame()); } GameObject throwableInstance = Instantiate(m_ThrowablePrefab, m_SpawnThrowableLocation.transform.position, Quaternion.identity); MonsterThrowableController throwableController = throwableInstance.GetComponent <MonsterThrowableController>(); throwableController.SetDirection(new Vector2(m_LookingDirection.x, 0)); yield return(new WaitForSeconds(m_FireDelay)); } throwing = false; } }