2024-12-15 01:39:39 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
public class ProjectileHitChecker : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
public bool Off_OnlyThisObj_byHit = false;
|
2025-01-18 23:21:18 +00:00
|
|
|
public bool NoDMG = false;
|
2024-12-15 01:39:39 +00:00
|
|
|
|
|
|
|
|
ProjectileBase m_ProjectileBase;
|
|
|
|
|
BoxCollider m_Collider;
|
|
|
|
|
Vector3 ColiiderOriginalSize;
|
|
|
|
|
bool setInit = false;
|
|
|
|
|
|
|
|
|
|
private void Init()
|
|
|
|
|
{
|
|
|
|
|
if (setInit) return;
|
|
|
|
|
setInit = true;
|
|
|
|
|
|
|
|
|
|
m_Collider = GetComponent<BoxCollider>();
|
|
|
|
|
ColiiderOriginalSize = m_Collider.size;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Set(ProjectileBase pb) { m_ProjectileBase = pb; }
|
|
|
|
|
public void Set_Size(float addSize)
|
|
|
|
|
{
|
|
|
|
|
Init();
|
|
|
|
|
m_Collider.size = ColiiderOriginalSize + Vector3.one * addSize;
|
|
|
|
|
}
|
|
|
|
|
public BoxCollider Get_Collider() { Init(); return m_Collider; }
|
|
|
|
|
|
|
|
|
|
void OnTriggerEnter(Collider other) { ProcessCollider(other); }
|
|
|
|
|
void OnCollisionEnter(Collision collision) { ProcessCollider(collision.collider); }
|
2025-01-02 07:33:09 +00:00
|
|
|
private void OnParticleCollision(GameObject other)
|
|
|
|
|
{
|
|
|
|
|
ProcessCollider(other.GetComponent<Collider>());
|
|
|
|
|
}
|
2024-12-15 01:39:39 +00:00
|
|
|
private void ProcessCollider(Collider other)
|
|
|
|
|
{
|
2025-01-18 23:21:18 +00:00
|
|
|
if (m_ProjectileBase.ProcessCollider(other, !Off_OnlyThisObj_byHit, NoDMG) && Off_OnlyThisObj_byHit)
|
2024-12-15 01:39:39 +00:00
|
|
|
gameObject.SetActive(false);
|
|
|
|
|
}
|
|
|
|
|
}
|