본문 바로가기
■ 로블록스 개발 노트/개발일지

[로블록스]#5 - 캐릭터 & Humanoid

by Popbox 2025. 12. 29.

[로블록스]#5 - 캐릭터 & Humanoid

로블록스를 하며 가장 충격적이었던 부분은
캐릭터 시스템이 이미 완성된 상태라는 점이었다.
Unity 개발자 입장에서 이 구조를 제대로 이해하지 못하면, 계속 “왜 이렇게 되어 있지?”라는 의문만 남는다.

CharacterConroller보다 더더더 많이 완성된 상태!?


 

 

1. 캐릭터를 “만든다”는 개념부터 다르다

Unity에서 캐릭터를 만든다는 것은 보통 이런 작업을 의미한다.

  • 컨트롤러 구성
  • 이동, 점프, 회전 로직 작성
  • 카메라 연동

하지만 로블록스에서는 이 모든 과정이 기본 제공이다.

로블록스에서 캐릭터는
“만드는 것”이 아니라 “받아들이는 것”에 가깝다.

 

 

 


2. Character 구조 한눈에 보기

플레이어가 게임에 들어오면 자동으로 Character 모델이 생성된다.

Player
 └─ Character
     ├─ Humanoid
     ├─ HumanoidRootPart
     ├─ Head
     ├─ UpperTorso / LowerTorso
     ├─ LeftArm / RightArm
     └─ ...
    

이 구조는 거의 모든 로블록스 게임에서 동일하다.

 

 

 


3. Humanoid는 캐릭터의 핵심

Humanoid는 로블록스 캐릭터 시스템의 심장이다.

이동, 점프, 체력, 애니메이션 상태까지 거의 모든 기본 동작을 담당한다.

  • WalkSpeed
  • JumpPower
  • Health / MaxHealth
  • MoveDirection
  • State

humanoid의 properties(속성 패널)

Unity에서 직접 만들던
“CharacterController + 상태머신”이
Humanoid 하나로 묶여 있다.

 

 

 


4. HumanoidRootPart의 역할

캐릭터 이동의 기준점은 HumanoidRootPart다.

이 파트는 다음 역할을 맡는다.

  • 캐릭터 위치 기준
  • 네트워크 동기화 중심
  • 물리 계산의 기준점

Unity로 치면 루트 트랜스폼 + 네트워크 앵커에 가깝다.

 

 

 


5. 애니메이션은 이미 연결돼 있다

로블록스 캐릭터는 기본 애니메이션 시스템이 이미 포함돼 있다.

  • Idle
  • Walk
  • Run
  • Jump
  • Fall

Animator와 Animation Controller가 자동으로 연결되어 있으며, 개발자는 교체만 하면 된다.

“애니메이션이 왜 재생되지 않지?”라는 고민이
거의 발생하지 않는다.

 

 

 


6. StarterCharacter / StarterPlayer 구조

캐릭터를 커스터마이징하고 싶다면 StarterCharacter를 사용한다.

  • StarterCharacterScripts
  • StarterPlayerScripts

여기 들어간 스크립트들은 캐릭터 생성 시 자동으로 복사된다.

“캐릭터가 생성될 때 항상 실행돼야 하는 코드”는
여기에 둔다.

 

 

 


7. Unity 개발자가 주의할 점

  • 이동 로직을 직접 만들려 하지 말 것
  • Humanoid를 우회하지 말 것
  • 물리 이동보다 Humanoid API를 우선 사용
  • 캐릭터는 서버 기준으로 관리

로블록스 캐릭터 시스템은 싸워서 이기는 구조가 아니라, 믿고 쓰는 구조다.

 

 

 


8. 캐릭터 구조 핵심 요약

  • Character는 자동 생성된다
  • Humanoid가 모든 기본 동작을 담당
  • HumanoidRootPart는 기준점
  • 애니메이션은 이미 연결돼 있다
  • Starter 구조를 적극 활용하자

 

 

 


9. 다음 글 예고

다음 글에서는 입력 처리 & 카메라 제어를 다룰 예정이다.

LocalScript 기준으로 키 입력, 마우스, 모바일 터치를 어떻게 처리하는지, Unity와 어떤 차이가 있는지 정리해본다.

입력은 클라이언트에서,
판단은 서버에서


반응형

댓글