private void OnCollisionEnter(Collision collision) { Enemy enemyStates = collision.transform.GetComponentInParent <Enemy>(); StateManager states = collision.transform.GetComponentInParent <StateManager>(); if (!hitShield) // If we did NOT hit a shield... { if (states != null) // If we hit the player... { RaycastHit hitInfo; Debug.DrawRay(transform.position + Vector3.up / 2, transform.forward * 2f, Color.red, 5); Physics.Raycast(transform.position + Vector3.up / 2, transform.forward, out hitInfo, 2f); if (hitInfo.collider != null) { if (hitInfo.collider.gameObject.name != "Shield") { states.TakeDamage(damageValue, transform, true, true); } } } } Destroy(gameObject, 1); gameObject.SetActive(false); GetComponent <Collider>().enabled = false; //GetComponent<MeshRenderer>().enabled = false; }
private void OnTriggerEnter(Collider other) { Enemy enemyStates = other.transform.GetComponentInParent <Enemy>(); StateManager states = other.transform.GetComponentInParent <StateManager>(); if (enemyStates == null && states == null) // If target hit is not a damageable character... { return; } if (GetComponentInParent <StateManager>()) // If we (the weapon) are held by the player... { if (enemyStates != null) // If we hit an enemy... { if (playerSpiritSystem.spiritEquipped != null) { ChooseDamageType(playerSpiritSystem.spiritEquipped, enemyStates); } else { enemyStates.TakeDamage(damage); } } } if (states != null) // If we hit the player... { int crit = Random.Range(1, 101); if (crit <= critChance) { Debug.Log("Crit!"); states.TakeDamage(critDamage, GetComponentInParent <Enemy>().gameObject.transform, true, true); GetComponentInParent <WeaponHook>().CloseDamageCollider(); } else { states.TakeDamage(damage, GetComponentInParent <Enemy>().gameObject.transform, true, true); GetComponentInParent <WeaponHook>().CloseDamageCollider(); } } }