inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Rotation

world 좌표계, local 좌표계

228

jin

작성한 질문수 3

0

transform.rotation = Quaternion.LookRotation(Vector3.forward); 
transform.position = transform.TransformDirection(Vector3.foward * Time.deltaTime * _speed);

강의를 듣고, 질문글들을 읽어보았을때

위의 코드에서 rotation일때 Vector3.forward는 world 좌표계에서의 (0, 0, 1) 이고, position일때의 Vector3.foward는 local 좌표계에서의 (0, 0, 1)이라고 이해했는데

Vector3가 어느경우에 world 혹은 local 좌표계에서 사용되는건지 이해가 잘 가지 않습니다.

C# unity

답변 1

0

인프런 AI 인턴

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

jin님의 질문에 대해 관련된 내용이 포함된 질문&답변을 찾았습니다. Vector3.forward가 어느 경우에 World 좌표계 혹은 Local 좌표계에서 사용되는지에 대한 혼란은 Unity에서 매우 흔한 질문 중 하나입니다.
이에 대한 답변으로, transform.TransformDirection(Vector3.forward) 설명에서 다루고 있습니다. 이는 좌표 변환과 관련된 Unity의 기본 개념을 설명합니다.

  • Vector3.forward는 자체적으로 단순히 (0, 0, 1)의 벡터를 나타내는 것이며, 이는 주로 World 좌표계의 전방을 의미합니다. 하지만 이 벡터를 어떤 방식으로 해석하느냐(즉, Local 좌표계로 해석하느냐, World 좌표계로 바로 해석하느냐)는 사용하는 Unity 함수에 따라 달라집니다.
  • transform.TransformDirection(Vector3.forward) 함수는 Local 좌표계의 방향을 World 좌표계로 변환하는 역할을 합니다. 즉, 이 함수를 사용하면 Vector3.forward가 표시하는 방향이 로컬 객체 기준에서 World 좌표계로 변환되어 해석됩니다.

이러한 이유로 transform.position = transform.TransformDirection(Vector3.forward * Time.deltaTime * _speed)에서 TransformDirection을 사용하면, Vector3.forward를 객체의 로컬 좌표계에서 World 좌표계로 변환하여 적용하게 됩니다. 즉, 객체의 전진 방향이 객체의 현재 회전을 반영한 World 좌표계로 해석되어 이동됩니다.

다만, transform.rotation = Quaternion.LookRotation(Vector3.forward)에서는 Vector3.forward가 직접적으로 World 좌표계의 전방을 가리키는 방향으로 사용되며, 별도의 변환이 필요하지 않습니다.

추가적인 이해를 돕기 위해 다른 유용한 링크를 소개합니다:
- Quaternion.Slerp와 Transform의 회전과 이동에서는 Quaternion.Slerp와 transform.Translate 사용 시의 좌표계 관련 설명이 있습니다.

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

UI 기능 관련 질문이 있습니다!

0

39

2

픽셀 좌표 스크린 좌표

0

33

0

전체적으로 코드 읽는게 굉장히 오래 걸리네요...

0

78

2

카메라 #2 수업 캐릭터 쓰러짐 해결

0

85

1

플레이어 움직임이 끝날때, 기울어짐 현상

0

84

1

Input 적용과 관련하여 질문 있습니다.

0

75

1

디버그 불가.. Unity에 연결 불가

0

83

1

달리기 애니메이션 에러

0

89

2

오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다

0

66

1

GetKey 오류

0

112

2

에셋을 어디에 올려두신지 알 수 있나요?

0

108

1

재귀호출? 오류나는데 왜 이래요 ?

0

169

6

Animation blending 파라미터 계산

0

69

1

newPos와 to지점이 겹쳐져야 하는거 아닌가요?

0

97

3

오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다

0

88

2

질문있습니다

0

143

2

아 이거 소스코드 같은거 없나요?

0

142

3

질문 드립니다. string.IsNullOrEmpty(name)

0

87

2

@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?

0

136

2

유니티6 NavMesh 안되는분들

1

176

1

Unity6 Unity-Chan Material 마젠타 문제 해결법

7

530

1

GetComponent<Poolable> 질문드립니다.

0

103

2

UI 불러오지 못함

0

119

2

UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.

0

155

2