BITKit/Src/Unity/Scripts/Physics/PhysicsImpacter.cs

30 lines
965 B
C#
Raw Normal View History

2024-05-31 01:23:15 +08:00
using System;
2023-06-05 19:57:17 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BITKit
{
2023-10-06 23:43:19 +08:00
public class PhysicsImpact : MonoBehaviour
2023-06-05 19:57:17 +08:00
{
2024-05-31 01:23:15 +08:00
private new Collider collider;
public event Action<Collision> OnPhysicsCollisionEnter;
[SerializeField] private Collider[] ignoreColliders;
private readonly HashSet<int> ignoreCollidersHash = new();
private void OnEnable()
2023-06-05 19:57:17 +08:00
{
2024-05-31 01:23:15 +08:00
collider = GetComponent<Collider>();
ignoreCollidersHash.Clear();
if (ignoreColliders is null) return;
foreach (var x in ignoreColliders)
2023-06-05 19:57:17 +08:00
{
2024-05-31 01:23:15 +08:00
ignoreCollidersHash.Add(x.transform.GetInstanceID());
2023-06-05 19:57:17 +08:00
}
}
2024-05-31 01:23:15 +08:00
private void OnCollisionEnter(Collision collision)
{
if(ignoreCollidersHash.Contains(collision.transform.GetInstanceID())) return;
OnPhysicsCollisionEnter?.Invoke(collision);
}
2023-06-05 19:57:17 +08:00
}
}