private void OnCollisionEnter2D(Collision2D other) { if (m_Collided) { return; } if (other.gameObject.tag == "Ground") { m_Collided = true; m_FXManager.PlayHitGroundSoundFX(); StartCoroutine(FallToGround(destroyTimer)); m_Rigidbody2D.velocity = new Vector2(0f, 0f); m_Rigidbody2D.bodyType = RigidbodyType2D.Static; EnableCrabboCollison(); } else if (other.gameObject.tag == "Enemy") { NPCControllerAbstract npcController = other.gameObject.GetComponent <NPCControllerAbstract>(); npcController.Attacked(m_KnfieDamage, m_PlayerManager); knifeVelocity = 0f; m_Rigidbody2D.transform.SetParent(other.collider.gameObject.transform); m_BloodTrail.Play(); StartCoroutine(FallToGround(destroyTimer)); m_Rigidbody2D.simulated = false; m_Collided = true; } }
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); } }