32 lines
919 B
C#
32 lines
919 B
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(Collider2D))]
|
|
public class HazardHitbox : MonoBehaviour
|
|
{
|
|
[SerializeField] private LayerMask _targetLayer;
|
|
[SerializeField] private LayerMask _blockLayer; // 피해를 줄 레이어 (보통 Player)
|
|
private int _damage = 0;
|
|
private Collider2D _collider;
|
|
private void Awake()
|
|
{
|
|
_collider = GetComponent<Collider2D>();
|
|
_collider.isTrigger = true;
|
|
}
|
|
|
|
private void OnTriggerStay2D(Collider2D other)
|
|
{
|
|
TryDamage(other);
|
|
}
|
|
|
|
private void TryDamage(Collider2D other)
|
|
{
|
|
if ((_targetLayer.value & (1 << other.gameObject.layer)) == 0) return;
|
|
if (!other.TryGetComponent<IDamageable>(out var target))
|
|
target = other.GetComponentInParent<IDamageable>();
|
|
if (target == null) return;
|
|
|
|
target.TakeDamage(_damage);
|
|
}
|
|
}
|