public void OnDamageHit(HitBox.HitInfo hitInfo) { var damage = new Damage(currentMeleeWeapon.damage); switch (hitInfo.hitBarPoint) { case HitBarPoints.Top: damage.value = (int)((currentMeleeWeapon.damagePercentage.Top * (currentMeleeWeapon.damage.value)) / 100); TryApplyDamage(hitInfo.hitCollider, damage, HitBarPoints.Top); break; case HitBarPoints.Center: damage.value = (int)((currentMeleeWeapon.damagePercentage.Center * (currentMeleeWeapon.damage.value)) / 100); TryApplyDamage(hitInfo.hitCollider, damage, HitBarPoints.Center); break; } }
public void OnRecoilHit(HitBox.HitInfo hitInfo) { if (!hitProperts.useRecoil || !inAttack) { return; } Ray ray = new Ray(bodyCenter.position, transform.forward); var inForward = (Physics.SphereCast(new Ray(ray.origin, ray.GetPoint(0.1f) - bodyCenter.position), 0.1f, hitProperts.recoilMaxDistance, hitProperts.hitRecoilLayer)); if (hitInfo.hitBarPoint == HitBarPoints.Bottom && inForward) { //var recoil_id = (int)damage.recoil_id - (int)(currentMeleeShield != null ? currentMeleeShield.Recoil_ID : 0); SendMessage("TriggerRecoil", 0, SendMessageOptions.DontRequireReceiver); inAttack = false; ClearHitColliders(); } }