강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kiyomin
kiyomin

câu hỏi đã được viết

[Phát triển game MMORPG với C# và Unity] Part3: Unity Engine

Chức vụ

동일한 질문이 있는 것 같은데 이해가 잘 안되서 다시 질문 드립니다

Viết

·

520

1

transform.position += transform.TransformDirection(Vector3.forward);

Vector3.forward는 (0,0,+1) 이것을 TransformDirection을 통해 월드좌표로 바꾸면 월드 +z축 방향으로 이동한다는 의미 아닌가요??

저희가 원하는건 Player를 기준으로 한 로컬좌표에서 +z축 방향으로 이동하고 싶은것인데 말이죠

실제로 TransformDirection을 사용하지 않으면 그냥 월드좌표를 기준으로 진행하는데 여기서 TransformDirection을 통해 월드로 바꾼다는 것이 이해가 잘 되지 않습니다

C#unity

Câu trả lời 5

2

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

로컬 좌표는 월드좌표를 기준으로 하는 것이 아니라
로컬좌표계를 따로 갖습니다.
예를 들어 위와 같은 상황에서,
파란색 forward (로컬 forward)는
로컬 좌표 기준으로는 (x = 0, y = 1)입니다.
이를 다시 World 좌표로 변환하면,
빨간색 좌표계를 기준으로 보면 (x = 1, y = 0)이 되겠죠.

TransformDirection은
(x = 0, y = 1) -> (x = 1, y = 0) 변환을 해줍니다.

1

KIYOMIN님의 프로필 이미지
KIYOMIN
Người đặt câu hỏi

로컬좌표를 월드좌표계에 맞는 월드좌표로 변환한다는 느낌으로 이해했습니다! 감사합니다!

1

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

저희가 원하는건 Player를 기준으로 한 로컬좌표에서 +z축 방향으로 이동하고 싶은것인데 말이죠
-> +z 축 방향 이동이 바로 vector3.forward 즉 (0, 0, 1)입니다.

Vector3.forward는 (0,0,+1) 이것을 TransformDirection을 통해 월드좌표로 바꾸면 월드 +z축 방향으로 이동한다는 의미 아닌가요??
->아닙니다.
로컬 +z축 방향으로 이동하고 싶은건 맞는데,
그 방향 벡터를 World 좌표계에 맞춰 변환하는 함수가 TransformDirection입니다.
transform.position은 무조건 월드를 기준으로 하는 것이기 때문에,
바로 (0, 0, 1)을 더하면 World +z축으로 이동하는 것이 됩니다.

로컬 기준 (0, 0, 1)은 World 기준으로 (?, ?, ?) 뭡니까?
라는 질문에 대한 해답을 TransformDirection으로 얻을 수 있는 셈이죠.
물론 transform에는 기능이 굉장히 많고 localPosition을 기준으로
좌표를 수정하는 기능도 있으니 다른 방법으로 해도 상관없습니다.

0

이런 질문을 해주신분께 감사하고

답변을 상세히 잘해주신 저자님께 감사합니다

같은 궁금증이있었고 가려운부분을 긁어주셨내요

0

KIYOMIN님의 프로필 이미지
KIYOMIN
Người đặt câu hỏi

이렇게 생각을 하고 있습니다...

잘 이해가 안되네요ㅠㅠ

조금 더 생각을 해보겠습니다

Hình ảnh hồ sơ của kiyomin
kiyomin

câu hỏi đã được viết

Đặt câu hỏi