public void OnRecoilHit(vHitBox.HitInfo hitInfo) { if (!hitProperties.useRecoil || !applyDamage) { return; } if (InRecoilRange(hitInfo.hitPoint)) { // Check your animation state on the substate machine HitRecoil, this method will trigger the Recoil_ID 0 to trigger the animation HitWall SendMessage("TriggerRecoil", 0, SendMessageOptions.DontRequireReceiver); // trigger recoil sound CurrentMeleeAttack().PlayRecoilSound(); // instantiate recoil particle var hitrotation = Quaternion.LookRotation(new Vector3(transform.position.x, hitInfo.hitPoint.y, transform.position.z) - hitInfo.hitPoint); CurrentMeleeAttack().InstantiateParticle(hitInfo.hitPoint, hitrotation); } }
public void OnDamageHit(vHitBox.HitInfo hitInfo) { var damage = new Damage(CurrentMeleeAttack(currentHitboxFrom).damage); var fullDamage = (int)(CurrentMeleeAttack(currentHitboxFrom).damage.value *currentDamageMultiplier); damage.hitPosition = hitInfo.hitPoint; damage.sender = transform; damage.attackName = attackName; switch (hitInfo.hitBarPoint) { case HitBarPoints.Top: damage.value = (int)((CurrentMeleeAttack(currentHitboxFrom).damagePercentage.Top *(fullDamage)) / 100); hitInfo.hitCollider.SendMessage("TakeDamage", damage, SendMessageOptions.DontRequireReceiver); break; case HitBarPoints.Center: damage.value = (int)((CurrentMeleeAttack(currentHitboxFrom).damagePercentage.Center *(fullDamage)) / 100); hitInfo.hitCollider.SendMessage("TakeDamage", damage, SendMessageOptions.DontRequireReceiver); break; } }