Files
WhiteMan_Unity2D/Assets/02_Scripts/Combat/HazardHitbox.cs

33 lines
954 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;
_collider.enabled = false;
}
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);
}
}