32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Cysharp.Threading.Tasks;
|
|
namespace BITKit
|
|
{
|
|
public static class PhysicsHelper
|
|
{
|
|
public static async UniTask AddForceAtPositionAsync(this Rigidbody rigidbody, Vector3 force, Vector3 position,ForceMode forceMode=ForceMode.Force)
|
|
{
|
|
if (rigidbody is null) return;
|
|
await UniTask.DelayFrame(8);
|
|
try
|
|
{
|
|
rigidbody.AddForceAtPosition(force, position,forceMode);
|
|
}
|
|
catch(MissingReferenceException){}
|
|
|
|
}
|
|
public static async void Explosion(Vector3 position,float radius,LayerMask layerMask,float force)
|
|
{
|
|
await UniTask.DelayFrame(8);
|
|
foreach (var x in UnityEngine.Physics.OverlapSphere(position,radius,layerMask))
|
|
{
|
|
if(x.attachedRigidbody is null)continue;
|
|
x.attachedRigidbody.AddExplosionForce(force,position,radius);
|
|
//Debug.Log(x);
|
|
}
|
|
}
|
|
}
|
|
} |