강의

멘토링

로드맵

Inflearn brand logo image

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

anhyeokjun님의 프로필 이미지
anhyeokjun

작성한 질문수

[Unity6] 나만의 서바이벌 게임 만들기

Character Movement

move함수

해결된 질문

작성

·

139

0

안녕하세요 선생님

move 함수에서 카메라 백터 로

0으로 기준을 잡아서 horizontal, vertical 값을 줘서 움직이는건가요

camerForward,cameraRight기준으로 코드는 처음봐서요!

헷갈립니다

답변 2

0

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

이 코드는 월드 좌표(0,0,0) 기준이 아닌, 카메라의 방향을 기준으로 이동하는 방식입니다.

보통 Vector3.forward(0,0,1)와 Vector3.right(1,0,0)를 사용하면 고정된 방향으로 이동하지만, 이 코드는 카메라가 보는 방향에 맞춰 움직이도록 합니다.

  1. Camera.main.transform.forward와 Camera.main.transform.right를 가져와 y 값을 0으로 만든 후 Normalize() 합니다.
    → 이렇게 하면 지형에 영향받지 않는 평면 이동 벡터를 얻을 수 있습니다.

  2. 입력값(horizontal, vertical)을 cameraRight와 cameraForward에 곱해 이동 방향을 결정합니다.
    → 따라서 W를 누르면 카메라가 보는 방향으로 이동하고, A를 누르면 카메라의 왼쪽 방향으로 움직입니다.

이 방식 덕분에 카메라를 돌려도 이동 방향이 직관적으로 유지됩니다! 😊

anhyeokjun님의 프로필 이미지
anhyeokjun
질문자

그렇군요!!답변감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. anhyeokjun님.

Move 함수에서 카메라 벡터를 기준으로 캐릭터의 움직임을 제어하는 문제에 대해 질문해주셨습니다. Unity에서 캐릭터를 움직일 때 카메라의 방향을 기준으로 움직이게 설정하는 것은 흔한 기법입니다. 두 가지 주요 벡터는 다음과 같습니다:

  1. cameraForward: 이는 카메라가 바라보고 있는 전방 방향을 나타내며, 일반적으로 (0, 0, 1) 벡터에 카메라의 회전 행렬을 곱하여 얻을 수 있습니다.
  2. cameraRight: 이는 카메라의 오른쪽 방향으로 정의되며, 전방 벡터에 수직입니다. 따라서 (1, 0, 0) 벡터에 카메라의 회전 행렬을 곱하여 얻습니다.

horizontalvertical 값은 보통 사용자의 입력에 의해 결정되며, 이 입력 값들은 위에서 설명한 카메라 방향 벡터와 결합되어 월드 좌표 기준으로 캐릭터의 이동 방향을 결정하게 됩니다. 이렇게 함으로써, 카메라의 시점에 따라 캐릭터가 자연스럽게 이동할 수 있게 됩니다.

이에 대해 더 명확한 설명이 필요하시다면, 아래에 유사한 내용이 다루어진 기존 질문을 참고하실 수 있습니다:

이 기본 개념과 이전 응답에서 다룬 회전과 이동에 관한 내용을 통해 카메라 방향에서의 이동 구현이 어떻게 이루어지는지를 이해하시는데 도움이 되셨으면 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

anhyeokjun님의 프로필 이미지
anhyeokjun

작성한 질문수

질문하기