강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

한종훈님의 프로필 이미지
한종훈

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Rotation

Slerp

작성

·

200

0

slerp함수에 처음벡터와 나중벡터 사이의 일정비율을 나타내는 상수를 넣었는데 그러면 회전하는 속도가 점점 느려지면서 컴퓨터가 더이상 차이를 인식할 수 없을 때까지(?) 최종값에 다가갈 것 같습니다.
여기까지 제가 이해한 것이 맞다면 질문은 두가지입니다.
1. 캐릭터를 회전시키고 싶을 때 현재 코드를 보면 회전이 시작되는 시간은 직관적으로 알 수 있으나 캐릭터가 원하는 방향을 바라볼 때까지 얼마나 키를 누르고 있어야하는지는 직관적으로 알 수 없습니다. 이를 알 수 있는 방법이 있나요 ? 아니면 경험적으로 유니티에서 키를 누르면서 시간을 측정해야하나요?
2. 지금은 Slerp함수에 처음 벡터와 나중벡터 (사원수), 그리고 한번의 운동으로 그 사이 중 얼마만큼 움직일지를 결정하는 비율(상수)를 넣어줬는데 이렇게 되면 매 순간 회전하는 속도를 제어할 수 없는 문제가 있는것 같습니다. Slerp함수에 상수 대신에 시간에 따른 함수값? 같은것을 넣어줄 수 있다면 좀더 자연스럽게 움직이는 캐릭터를 구현할 수 있을것 같다는 생각이 듭니다. 나중에 이러한 방법이 있나요? 아니면 지금까지 배운 회전법을 적절하게 사용하여 실제 게임과 같은 자연스러운 움직임을 구현할 수 있는 것인가요?

퀴즈

56%나 틀려요. 한번 도전해보세요!

게임 오브젝트의 이동 계산 시 Time.deltaTime 값을 곱해주는 주된 이유는 무엇일까요?

캐릭터의 최대 이동 속도를 제한하기 위해

모든 컴퓨터에서 초당 이동 거리를 일정하게 유지하기 위해

물리 엔진 계산의 정확도를 높이기 위해

오브젝트의 회전 상태에 따라 이동 방향을 결정하기 위해

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

1. 2. 둘 다 비슷한 질문인데 그건 어디까지나 기획의 영역입니다.
RPG 게임에서는 회전에 그 정도로 힘을 쏟지 않고
심지어 서버는 회전중이라는 사실도 모르고 바라보는 방향만 알고 있을 뿐입니다.
그러니 공식으로 정말 더 이쁘게 구현할 필요가 있다면,
그렇게 해도 안 될 것은 없지만 실제로 그렇게 하는 것을 본 적은 없습니다.


한종훈님의 프로필 이미지
한종훈

작성한 질문수

질문하기