protected override void OnHit(RaycastHit raycastHit) { var IHittableComponents = raycastHit.collider.gameObject.GetComponents <IHittableObject>(); foreach (var IHittableComponent in IHittableComponents) { IHittableComponent.OnHitByWeapon(0f, shotByPlayer); } var radialDamage = PoolManager.instance.Spawn <RadialDamage>(null, transform); radialDamage.damageRadius = damageRadius; radialDamage.maxExplosionDamage = maxExplosionDamage; radialDamage.maxForceToApply = maxForceToApply; radialDamage.enemiesLayer = enemiesLayer; PoolManager.instance.Spawn <ExplosionType>(null, transform.position, Quaternion.identity); }
protected override void OnHit(RaycastHit raycastHit) { var IHittableComponents = raycastHit.collider.gameObject.GetComponents <IHittableObject>(); foreach (var IHittableComponent in IHittableComponents) { IHittableComponent.OnHitByWeapon(damageDealt, shotByPlayer); } if (forceToApplyOnObject > 0) { var hitObjRigidBody = raycastHit.collider.gameObject.GetComponent <Rigidbody>(); if (hitObjRigidBody != null && !hitObjRigidBody.isKinematic) { hitObjRigidBody.AddForceAtPosition(transform.forward * forceToApplyOnObject, raycastHit.point, ForceMode.VelocityChange); } } var explosion = PoolManager.instance.Spawn <ExplosionType>(null, lastPosition, Quaternion.identity); SetupExplosion(explosion); }