타워 공격 기능 추가
각 타워 외형 변경 및 투사체 생성
This commit is contained in:
47
Assets/Scripts/GameBase/Projectile.cs
Normal file
47
Assets/Scripts/GameBase/Projectile.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class Projectile : MonoBehaviour
|
||||
{
|
||||
private Transform _target;
|
||||
public float speed = 20f;
|
||||
public float damage = 20f;
|
||||
|
||||
public void Seek(Transform target)
|
||||
{
|
||||
_target = target;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (_target == null)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
|
||||
// 타겟 방향으로 이동
|
||||
Vector3 dir = _target.position - transform.position;
|
||||
float distanceThisFrame = speed * Time.deltaTime;
|
||||
|
||||
// 적에게 도달했는지 확인
|
||||
if (dir.magnitude <= distanceThisFrame)
|
||||
{
|
||||
HitTarget();
|
||||
return;
|
||||
}
|
||||
|
||||
transform.Translate(dir.normalized * distanceThisFrame, Space.World);
|
||||
transform.LookAt(_target); // 적을 바라보게 회전
|
||||
}
|
||||
|
||||
void HitTarget()
|
||||
{
|
||||
IDamageable damageable = _target.GetComponentInParent<IDamageable>();
|
||||
if (damageable != null)
|
||||
{
|
||||
damageable.TakeDamage(damage);
|
||||
}
|
||||
|
||||
Destroy(gameObject); // 충돌 후 소멸
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user