BITFALL/Assets/BITKit/Unity/Scripts/Physics/PhysicsHelper.cs

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);
}
}
}
}