내일배움캠프 44일차 TIL, ChracterController

황오영·2024년 6월 19일
0

TIL

목록 보기
44/56
post-thumbnail

숙련주차 프로젝트

  • 오늘은 숙련주차 프로젝트 발제가 있었던 날이었다. 주제는 거의 자유주제급이어서 원하는 기능들을 한번 시험해보고 구현해보고자 해서 팀원분들과 회의를 나눴다.
  • 이런저런 얘기했는데 우리는 포트리스류 포격게임을 만들어 보고 싶어서 플랫포머 2D형식의 게임을 만들기로 했다!
  • 서버기능도 추가해 멀티대전까지 하는것이 목표긴한데 시간이 될지모르겠다. 추후 가능하다면 꼭 붙이고 다양한 기능을 넣어봐야겠다. 일단은 간다하게 적과 싸우는 게임으로만 만들어볼 예정이다

ChracterController

  • 움직임에 관해 이런저런 정보를 찾아보다 케릭터 컨트롤러라는 컴포넌트를 알게 되어 Rigidbody와의 움직임에는 차이가 있다고 해서 정리해 보고 싶어서 간단하게 정리를 했다.
    <출처 유니티 공식 문서>

ChracterController란

  • Rigidbody기반 물리를 사용하지 않는 3인 또는 1인 플레이어에 주로 사용되는 컴포넌트

프로퍼티

  • Slope Limit : 콜라이더가 명시된 값보다 작은 경사도만 오르도록 설정
  • Step Offset : 명시된 값보다 계단이 땅에 가까운 경우에만 올라감(계단의 폭)
  • Skin width : 콜라이더가 관통할 수 있는 너비
  • Min Move Distance : 케릭터가 지정한 값보다 낮게 움직이려고 하면 아에 움직이지 않음 지터링을 줄이기 위해 이 옵션을 사용(지터링? : Jitter 조금씩 움직이다 덜덜 떨다 라는 뜻으로 테블릿에서 선을 일직선으로 그을 때 실제로 펜의 궤적에 비해 화면상에 출력되는 선이 물결치듯 불안정하게 떨리는현상)
  • Center : 캡슐콜라이더의 오프셋 피벗에는 영향을 주지않음
  • Radius : 캡슐콜라이더의 반지름 길이
  • Height : 캡슐콜라이더의 높이

내장 메소드, 속성

  • Move : 기본적인 움직임을 구현해주는 함수
  • OnControllerColliderHit : 콜라이더와 충돌 시 발생하는 이벤트
  • SlopeLimit() 속성 : 경사로를 올라갈 때의 속도를 제한 할때 사용

좀더 자세한 속성들은 여기!

https://docs.unity3d.com/kr/530/ScriptReference/CharacterController.html (유니티 공식문서)

장,단점

  • 장점
  1. 플레이어의 입력을 사용하여 케릭터 제어가 수비다.
  2. 물리적 충돌을 고려하지 않아 움직임이 부드럽다.
  3. 계단이나 경사로를 올라갈 때 움직임의 제어가 가능하다.
  • 단점
  1. 물리적 충돌을 고려하지 않아 장애물과의 충돌에 반응이 어색하다.
  2. 케릭터 콜라이더가 지닌 캡슐콜라이더에 따라 움직임이 달라진다.

Rigidbody와의 비교

  • 보통 Rigidbody에도 이런 이동관련해서 많이 사용이 되는 컴포넌트인데 Rigidbody의 경우는 물리적인 상호작용이 많이 들어가서 이부분이 가장 큰 차이가 있다고 보면 된다. 물리적 연산을 해 주기때문에 직접 물리를 구현하지 않고도 물리적 특성을 사용할 수 있다.
  • 다만 Rigidbody의 경우 물리연산에 성능에 무리가 가기에 최적화가 중요해진다. 또한 자신이 원하는 물리적 특성을 구현하기위해선 유니티가 제공해주는 방식이 아닌 따로 또 추가적으로 물리 로직을 추가시켜줘야 한다.

언제 쓰면 좋을까

  • 물리적인 상호작용이 많다면 Rigidbody가 좋고 그렇지 않다면 CharacterController가 좀 더 좋을것이다. 다만 각 개발 상황에 맞게 적합한 방식을 선택할 필요가 있다.

오늘의 회고

  • 숙련주차 팀프로젝트를 진행하는데 팀원분들 열의가 넘쳐서 재미있는 프로젝트가 될 것같다. 내가 모르는 부분들도 있어서 많이 배울 수 있을것같다
  • 날이 많이 더워서 집중이 조금 떨어지고 체력관리도 필요한것같다. 몸관리 잘해야겠다. 올여름은 더욱더 덥다니까 몸보신도 잘 하고 건강도 챙겨야겠다.
profile
게임개발을 꿈꾸는 개발자

0개의 댓글