Unity 입문 - Top Down

강진규·2025년 2월 18일

Unity 입문

목록 보기
3/3
post-thumbnail

우리가 만들 게임은 2D Top Down 슈팅 게임 입니다.

우리 게임의 주요 특징

  1. 플레이어 조작
    • WASD 키로 자유롭게 이동
    • 마우스를 사용해 조준 및 발사
  2. 적들과 전투
    • 다양한 패턴을 가진 적 등장
  3. 스테이지 기반 진행
    • 점점 어려워지는 적과 환경에서 생존하며 스테이지 클리어
  4. 난이도 상승
    • 진행 상황에 따라 적의 수와 패턴이 복잡해지며 도전 욕구 자극

딱봐도 엄청 어려워보이는 녀석이다. 실제로 다 하는데 엄청 오래걸렸다.
이번엔 뭔가 스크립트를 엄청 많이 나누고 작업을 했는데,
그게 아직 익숙치 않기도 했고 양도 많았어서 힘들었다.


[ 내가 생각한 핵심 기능 ]

이 게임은 기본적으로 전투를 통해 진행되는데 플레이어의 체력이 0이 될때까지
웨이브가 반복되서 지속적으로 몬스터가 생성된다.
여기서 몬스터가 플레이어를 공격하게 되는데 이 부분이 좀 어렵기도 했고,
재밌기도 했다.

 float distance = DistanceToTarget();
 Vector2 direction = DirectionToTarget();

 isAttack = false;

 if (distance <= followRange)
 {
     lookDirection = direction;

     if(distance < weaponHandler.AttackRange)
     {
         int layermaskTarget = weaponHandler.target;
         RaycastHit2D hit = Physics2D.Raycast(transform.position, direction, weaponHandler.AttackRange * 1.5f, (1 << LayerMask.NameToLayer("Level")) | layermaskTarget);

         if(hit.collider != null && layermaskTarget == (layermaskTarget | (1 << hit.collider.gameObject.layer)))
         {
             isAttack = true;
         }

         movementDirection = Vector2.zero;
         return;
     }
     movementDirection = direction;
 }

위의 코드를 통해 몬스터의 공격을 판단하게 된다.

우선 플레이어와 몬스터의 거리가 사정거리 안에 있어야 되고
미리 구해놓은 값들과 몬스터가 들고 있는 무기의 사정거리를 이용해
RaycastHit2D를 사용하였다.

hit.collider 가 해당 조건에 맞으면 isAttack이 true가 된다.
baseController에 있는 메서드에서 isAttack이 true가 되었기 때문에
Attack 메서드를 호출하고 공격 행동을 하게 된다.


[ 결과 ]

개인적으로 따라하기도 너무 어려웠다...
이제 개인과제를 해야되는데 벌써 머리가 아프다

0개의 댓글