feat : bullet base 작성 완료
- 이동속도, 데미지, 라이프타임을 받음 - bulletdata를 받아 초기화 진행 - 발사 위치를 기준으로 목표 방향 세팅 - 테스트를 위해 초기값 임의로 작성 work in DEG-100 JIRA
This commit is contained in:
parent
bc88d47e6b
commit
393b538920
@ -14,12 +14,60 @@ public struct BulletData
|
|||||||
LifeTime = lifeTime;
|
LifeTime = lifeTime;
|
||||||
Speed = speed;
|
Speed = speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
[RequireComponent(typeof(Collider))]
|
||||||
public class BulletBase : MonoBehaviour
|
public class BulletBase : MonoBehaviour
|
||||||
{
|
{
|
||||||
private float _speed;
|
// 데이터
|
||||||
private Vector3 _targetPosition;
|
private float _speed = 5f;
|
||||||
|
private float _damage = 1f;
|
||||||
|
private float _lifeTime = 10f;
|
||||||
|
|
||||||
|
// 내부용
|
||||||
|
private Vector3 _direction = Vector3.forward;
|
||||||
|
private float _timer;
|
||||||
|
|
||||||
|
public virtual void Initialize(BulletData bulletData)
|
||||||
|
{
|
||||||
|
_speed = bulletData.Speed;
|
||||||
|
_damage = bulletData.Damage;
|
||||||
|
_lifeTime = bulletData.LifeTime;
|
||||||
|
|
||||||
|
// 발사 위치 기준 목표 방향만 계산
|
||||||
|
_direction = (bulletData.TargetPos - transform.position).normalized;
|
||||||
|
|
||||||
|
// 탄환이 바라보는 방향 세팅
|
||||||
|
transform.rotation = Quaternion.LookRotation(_direction);
|
||||||
|
|
||||||
|
_timer = 0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
// 1) 이동
|
||||||
|
transform.position += _direction * (_speed * Time.deltaTime);
|
||||||
|
|
||||||
|
// 2) 수명 카운트
|
||||||
|
_timer += Time.deltaTime;
|
||||||
|
if (_timer >= _lifeTime)
|
||||||
|
{
|
||||||
|
DestroyBullet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTriggerEnter(Collider other)
|
||||||
|
{
|
||||||
|
var character = other.GetComponent<CharacterBase>();
|
||||||
|
if (character != null)
|
||||||
|
{
|
||||||
|
character.TakeDamage(_damage);
|
||||||
|
DestroyBullet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void DestroyBullet()
|
||||||
|
{
|
||||||
|
Debug.Log("## Bullet destroyed");
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user