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;
     }
 }
Exemplo n.º 2
0
    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);
        }
    }