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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

Rotation

캐릭터가 바라보는 방향을 기준으로 회전하기

21.12.07 20:01 작성

·

1.5K

0

안녕하세요.

 

본 강의에서는 W를 누르면 월드좌표 기준 (0,0,1)로 방향을 회전하며 전진합니다.

 

문득 궁금한 것이 생겼는데, S를 누르면 캐릭터가 바라보는 방향의 반대로 전진하고 A를 누르면 캐릭터 기준 왼쪽으로 전진하는건 어떤식으로 구현해야 하나요? 

 

Slerp와 LookRotation을 사용했더니 방향 전환 문제로 계속 그 자리에서 회전하는 현상이 일어납니다. 

해결할 수 있는 좋은 방법이 있을까요?

답변 4

1

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

2021. 12. 07. 22:26

음~ 질문이 모호한 것 같은데요.
캐릭터가 바라보는 방향 기준으로 뒤나 왼쪽으로 가는데,
회전도 배제하지 않고 회전도 같이 돌아야 한다는 것인가요?
그 상황에서 같이 회전을 하기 때문에 현재 방향이
틀어져서 제자리를 돈다는 말씀이신가요? 

그럴 땐 키보드를 누른 상황에서의 방향을 저장해서 이동한다거나
다양하게 응용이 가능합니다. (마우스 클릭 시 이동처럼)

0

--님의 프로필 이미지

2021. 12. 08. 18:14

감사합니다 선생님 ㅎㅎ 영감을 얻었습니다.

0

--님의 프로필 이미지

2021. 12. 07. 20:38

답변 너무나 감사합니다.

 

구글링을 통해서 찾아봤으나.. 아직 제가 구글링 실력이 부족한가봅니다 ㅠㅠ.. 원하는 내용을 찾기가 어려워서 질문드렸습니다.

 

작성해주신 코드대로 캐릭터가 회전을 배제하고 바라보는 방향 기준으로 움직이는 것 까지는 스스로 해결했지만  회전 기능을 넣으면 Slerp 때문인지 제자리에서 빙빙 도는 현상이 발생하더라구요

 

여기에 대해 힌트를 조금만 주실 수 있을까요?

0

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

2021. 12. 07. 20:19

좋은 궁금증이지만, 저에게 물어보시면 안 되고
이런 부분은 스스로 구글링을 통해 해결을 하셔야 합니다.

아주 다양한 방식이 있을 수 있는데
가령 transform.forward를 이용해 바라보고 있는 방향 좌표를 얻고
이를 이용해 좌표를 빼줄 수 있습니다.

if (Input.GetKey(KeyCode.S))

{

//transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f);

transform.position -= transform.forward * Time.deltaTime * _speed;

}

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기