타워 기능 추가 및 개선

This commit is contained in:
2026-01-14 11:33:18 +09:00
parent 745166803c
commit 96de63dd47
17 changed files with 2504 additions and 34 deletions

View File

@@ -0,0 +1,58 @@
using UnityEngine;
public class ExplosiveProjectile : MonoBehaviour
{
public float speed = 10f;
public float explosionRadius = 3f;
public float damage = 50f;
public GameObject explosionEffectPrefab;
// 유니티 인스펙터에서 "Enemy" 레이어를 선택할 수 있게 합니다.
public LayerMask enemyLayer;
private Vector3 _targetPosition;
public void SetTargetPosition(Vector3 position)
{
_targetPosition = position;
}
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, _targetPosition, speed * Time.deltaTime);
if (Vector3.Distance(transform.position, _targetPosition) < 0.1f)
{
Explode();
}
}
void Explode()
{
if (explosionEffectPrefab != null)
{
Instantiate(explosionEffectPrefab, transform.position, transform.rotation);
}
// 핵심 수정: enemyLayer에 해당하는 오브젝트만 감지합니다.
Collider[] colliders = Physics.OverlapSphere(transform.position, explosionRadius, enemyLayer);
foreach (Collider hitCollider in colliders)
{
IDamageable damageable = hitCollider.GetComponentInParent<IDamageable>();
if (damageable != null)
{
damageable.TakeDamage(damage);
Debug.Log($"[폭발 적중] {hitCollider.name}에게 {damage} 데미지!");
}
}
Destroy(gameObject);
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, explosionRadius);
}
}