3주차 게임 개발 기초 개인 프로젝트 2일차
캐릭터가 움직이면서도 마우스 방향을 주시하는 기능을 추가하였고, 타일맵을 이용하여 게임 맵을 제작 후 플레이어가 벽을 통과하지 못하도록 하였다. 또한, 플레이어에게 걷는 애니메이션을 루프하여 추가하였으며(추후 정지, 공격 애니메이션도 추가 예정) 플레이어가 왼쪽 클릭을 하면 해당 방향으로 벽에 닿으면 사라지는 투사체를 발사하는 기능을 추가하였다.
작업 내용 : https://excalidraw.com/#json=ZDszBE5J8PIgGL5Lk9YCL,2PD_ScCwi3vM0f-el2nDUg
Excalidraw — Collaborative whiteboarding made easy
Excalidraw is a virtual collaborative whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.
excalidraw.com
Github : https://github.com/twotop6357/FledglingKnight
GitHub - twotop6357/FledglingKnight
Contribute to twotop6357/FledglingKnight development by creating an account on GitHub.
github.com
쿼터니언
Unity의 Inspector에 표시되는 rotation은 오일러(Euler)각이다. 즉, Vector3로 표현된다는 뜻이다. 하지만 우리는 이 쿼터니언을 사용하여 rotation을 제어한다.

위와 같은 각도계를 사용하는 방법이 일반적이고 대중적으로 사용하는 방법이다. 그렇다면 우리가 사용하는 쿼터니언이란 무엇일까?
쿼터니언이란 3차원 벡터의 공간에서 회전을 표현하는 수학적 개념으로 4개의 요소로 구성된 복소수 시스템이다.
설명만 보아도 어지럽다. 3개의 요소를 사용한 오일러 각도계만 보아도 지끈지끈한데 요소를 4개 씩이나 쓴단다.
이게 뭔 짓인가.
그렇다면 이 쿼터니언은 도대체 왜 사용할까?
바로 짐벌락(Gimbal Lock) 현상 때문이다.
이야 새로운 용어가 너무 많아서 정신이 혼미해진다.
짐벌락 현상을 우리의 친구 챗GPT씨에게 물어보았다.

내가 이래서 AI를 안믿는다. 촬영 업계에서 짐벌락 현상을 저 의미로 사용하는지는 잘 모르겠지만 일단 내가 알고 싶던 정보가 아니다. 따라서 정의만을 적어 보자면
특정 축이 특정각으로 회전을 했을 때 두 축이 겹쳐서 한축이 소실되는 현상이라고 한다.
내 주위 사람들은 좋겠다. 내 뇌용량을 초과하여 넘쳐 흐르는 정보를 주워담아 가면 박학다식 해질테니까...

우선 짐벌이라는 것을 알아보고자 한다. 짐벌이란 단일 축에 대한 회전을 허용하는 수평 유지 장치를 의미한다고 한다. 위 영상에서 딱 한번 세 개의 회전 축이 일치하는 타이밍이 있을 것이다. 만약 그 때 바깥의 두 축이 회전을 멈춘다면 맨 안쪽의 축이 회전할 수 있을까?
답은 '그렇지 않다' 이다. 세 축은 서로 의존적이기 때문에 한 축을 회전시키면 다른 축도 함께 회전하게 된다고 한다. 이 현상을 짐벌락 현상이라고 한다.
아무튼 그래서 쿼터니언을 사용한다고 한다. 반항심(?)에 왜 오일러 각도계를 안쓰고 쿼터니언을 쓰는거야? 라고 생각했던 나를 반성하게 만드는 어지러운 내용이였다. 그냥 곱게 쓸걸...
너무 복잡하게 생각하지 않고 오일러 각도계를 사용했을 때 예기치 못한 에러가 발생할 수 있기 때문에 미연에 방지하고자 쿼터니언을 사용한다고 생각하기로 했다. 많이 사용하지 않던 방식을 이제 밥 먹듯이 자주 쓸테니 사용법을 완벽하게 이해할 때 까지 강의를 돌려 볼 생각이다.
5 / 10 작업 목표
카메라가 항상 캐릭터를 중앙에 두도록 설정하기, 애니메이션 수정하기
24.05.09 Today I Learned
'Today I Learned' 카테고리의 다른 글
[TIL][Unity] 3주차 게임 개발 기초 개인 프로젝트 4일차 (0) | 2024.05.13 |
---|---|
[TIL][Unity] 3주차 게임 개발 기초 개인 프로젝트 3일차 (0) | 2024.05.10 |
[TIL][Unity] 3주차 게임 개발 기초 개인 프로젝트 1일차 (0) | 2024.05.08 |
[TIL][C#] C# 콘솔 게임 만들기 프로젝트 (0) | 2024.05.07 |
[TIL][C#] 24.05.02 클래스의 상속 (0) | 2024.05.02 |