mirror of
https://github.com/GTA-ASM/SanAndreasUnity
synced 2024-11-23 12:33:02 +00:00
44 lines
1.1 KiB
C#
44 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
namespace SanAndreasUnity.Utilities
|
|
{
|
|
public class PushableByDamage : MonoBehaviour
|
|
{
|
|
public float forceMultiplier = 1;
|
|
private Damageable _damageable;
|
|
|
|
|
|
private void Awake()
|
|
{
|
|
_damageable = this.GetComponentOrThrow<Damageable>();
|
|
_damageable.OnDamageEvent.AddListener(this.OnDamaged);
|
|
}
|
|
|
|
void OnDamaged()
|
|
{
|
|
if (!NetUtils.IsServer)
|
|
return;
|
|
|
|
DamageInfo damageInfo = _damageable.LastDamageInfo;
|
|
|
|
if (damageInfo.damageType != DamageType.Bullet)
|
|
return;
|
|
|
|
if (null == damageInfo.raycastHitTransform)
|
|
return;
|
|
|
|
var c = damageInfo.raycastHitTransform.GetComponent<Collider>();
|
|
if (null == c)
|
|
return;
|
|
|
|
var rb = c.attachedRigidbody;
|
|
if (null == rb)
|
|
return;
|
|
|
|
rb.AddForceAtPosition(
|
|
damageInfo.hitDirection * damageInfo.amount.SqrtOrZero() * this.forceMultiplier,
|
|
damageInfo.hitPoint,
|
|
ForceMode.Impulse);
|
|
}
|
|
}
|
|
}
|