🧠 오늘의 핵심 정리

  • 러너 게임 팀프로젝트 시작 (서브웨이 서퍼 같은 타입)
  • 플레이어 이동/점프/슬라이드를 Input System으로 구현
  • 슬라이드 시 Collider 크기 변경으로 장애물 회피 처리
  • Ground 판정은 Ray 4개로 체크 (LayerMask 기반)

 

 

🏃‍♀️ 본캠프 34일차 : 팀프로젝트 첫날 (러너 게임)

오늘은 팀프로젝트 첫날이었습니다. 저희가 선택한 게임은 러너 게임으로, 예를 들면 '서브웨이 서퍼' 같은 타입이에요.

예전부터 이런 류의 게임은 즐겨 플레이했기 때문에, 만들기 전부터 기대가 됐습니다. 특히 저는 플레이어가 달리다가 부딪히고, 뒤에서 적이 다가오고, 붙잡히는 과정 같은 연출을 꼭 만들어보고 싶었거든요.

 

 

🎮 오늘 한 일 : 플레이어 애니메이션 + Input System 이동 구현

오늘은 플레이어 담당으로, Input System을 통해 플레이어 움직임을 구현했습니다.

  • 플레이 시작 시 자동으로 앞으로 이동
  • WASD 입력으로 좌/우 이동 + 점프 + 슬라이드
  • 슬라이드 시 Collider 크기를 줄여 장애물을 피하도록 처리

좌/우/점프는 생각보다 빨리 붙었는데, 문제는 슬라이드였어요. 그냥 애니메이션만 바꾸면 되는 줄 알았는데… 실제로는 충돌 판정이 그대로라서 장애물에 계속 걸리더라고요.

그래서 슬라이드 상태에서는 CapsuleCollider의 height/center를 변경해서 몸을 “낮춘 것처럼” 만들어주고, 슬라이드가 취소되면 원래대로 복구하는 방식으로 해결했습니다.

핵심 코드 1) 슬라이드 시 Collider 크기 변경

// AnimationHandler.cs 

public void SlidingAnimation(bool state) { 

anim.SetBool("Sliding", state);
if (state)
{
    col.height = 1.1f;
    col.center = new Vector3(0f, 0.5f, 0f);
}
else
{
    col.height = 2.05f;
    col.center = new Vector3(0f, 1f, 0f);
}

}

 

 

🕹️ Input System : 레인 이동 + 점프 + 슬라이드

러너 게임이라 “자유 이동”이 아니라 레인(lane) 기반으로 좌/우 이동하도록 구성했습니다. 현재 레인을 기준으로 목표 X를 계산하고, 실제 위치는 Lerp로 부드럽게 따라가게 했습니다.

점프/슬라이드는 Ground 체크가 필수라서, 아래로 Ray를 4방향으로 쏴서 안정적으로 바닥 판정을 하도록 구현했습니다.

주의! Ground 판정은 LayerMask 기준이라 바닥 오브젝트 Layer를 Ground로 설정해야 정상 동작합니다.

핵심 코드 2) Ground 체크 (Ray 4개 + LayerMask)

// PlayerController.cs 

bool IsGrounded() { 

Ray[] rays = new Ray[4] { 
new Ray(transform.position + (transform.forward * 0.2f) + (transform.up * 0.01f), Vector3.down), 
new Ray(transform.position + (-transform.forward * 0.2f) + (transform.up * 0.01f), Vector3.down), 
new Ray(transform.position + (transform.right * 0.2f) + (transform.up * 0.01f), Vector3.down), 
new Ray(transform.position + (-transform.right * 0.2f) + (transform.up * 0.01f), Vector3.down), };

for (int i = 0; i < rays.Length; i++)
{
    if (Physics.Raycast(rays[i], 0.1f, groundLayerMask))
        return true;
}
return false;


}

 

 

🧩 PlayerCondition.cs 생성

오늘은 아직 기능은 없지만, 앞으로 러너 게임에서 필요한 체력/피격/상태 이상 같은 확장에 대비해서 PlayerCondition 스크립트를 만들어두었습니다. 팀 프로젝트는 기능이 금방 불어나서, 미리 “들어갈 자리”를 만들어 두는 게 마음이 편하더라고요.

 

 

📌 오늘의 회고

팀프로젝트 첫날인데도 생각보다 많이 진행했습니다. 특히 슬라이드 구현하면서 “애니메이션만 바뀌면 끝이 아니다”를 다시 한 번 느꼈어요.

러너 게임은 결국 플레이어 조작감이 재미의 핵심이라, 내일은 이동 감도(레인 이동 속도, 점프 타이밍, 슬라이드 지속시간) 같은 부분을 더 손봐야 될 것 같습니다.

 

 

🔜 내일 할 일

  • 슬라이드 지속시간(slideDuration)을 실제 동작에 반영하거나, 입력 방식(홀드/토글) 확정
  • 장애물 충돌/피격 처리 설계 (플레이어 ↔ 적 추격 연출 연결 준비)
  • 플레이어 이동 감도(레인 이동 Lerp) 튜닝