유니티 버전의 클래스 다이어그램을 작성하고, 순수 C# 구현 방식과의 차이점을 분석하였다.
public 선언이 잦았으나, 유니티는 인스펙터를 활용하면서 private 필드 사용이 용이해져 데이터 안정성이 높아지는 구조이다.MonoBehaviour를 상속받아 정형화되어 있어 간편하다. 반면, 순수 C#은 상속 구조를 자유롭게 설계할 수 있어 최적화 관점에서 더 유리한 측면이 있다.인베이더 공격 로직 구현 시, 팀킬을 방지하기 위해 유니티의 Raycast 기능을 학습하고 적용하였다.
시작점에서 특정 방향으로 가상의 레이저를 쏴서 충돌체 정보를 얻는 기능이다. 매개변수는 (시작점, 방향, 정보 저장, 최대거리)로 구성된다.
RaycastHit hit;
// 현재 위치에서 뒤쪽으로 10f만큼 레이를 발사
if (Physics.Raycast(transform.position, Vector3.back, out hit, 10f))
{
// 만약 앞에 걸린 물체의 태그가 "Enemy"라면 (아군이 앞에 있다면)
if (hit.collider.CompareTag("Enemy"))
{
// 발사 기회를 다음으로 미루고 리턴한다.
_fireCooldown = _fireInterval;
return;
}
}
이 로직을 통해 사정거리 내에 아군이 있을 경우 발사를 생략하여 논리적인 공격 패턴을 구현할 수 있었다.