작성자 | MachinemanDW | ||
---|---|---|---|
작성일 | 2010-12-01 02:10:33 KST | 조회 | 5,440 |
첨부 |
|
||
제목 |
트리거에서 행위자 메시지로 3D회전 시키기
|
저도 처음으로 강좌를 올려보는군요 ㅋ
제가 알려드리려고 하는 것은 행위자 메시지로 유닛을 원하는 방향으로 회전을 시키는 방법입니다.
특히 비행 시뮬레이션을 제작하시는 분들에게 도움이 될거라고 생각합니다.
유닛을 2D로 회전 시키는 것은 트리거에서 '유닛이 각도를 향하게 만들기'또는 '유닛이 지점을 향하게 만들기'를 통하여 쉽게 할수 있으나
3D회전은 행위자 메시지를 통해 구현 할 수 있는데 처음 접했을 때 생각보다 쉽지는 않습니다.
이제 그 방법을 겔디터 초보 누구나 알수 있도록 아주 쉽게 알려드리겠습니다.
불사조를 원하는 방향으로 3D회전을 시켜봅시다.
트리거 행동에서 먼저 '행위자 메시지 보내기'를 합니다.
행위자는 유닛에서 가져온 행위자를 해서 불사조를 선택하시고
메시지는 '회전 설정' 을 합니다.
그러면
X앞으로
Y앞으로
Z앞으로
X위로
Y위로
Z위로
이런식으로 나오죠.
여기서
X앞으로
Y앞으로
Z앞으로
이 3가지 가지고 원하는 방향을 향하게 할 수 있는데요.
여기에 입력한 값의 의미는
(0,0,0)지점에서 (X앞으로, Y앞으로, Z앞으로)지점으로 쳐다보는 방향으로
유닛이 회전을 한다는 겁니다!
예를 들어
X앞으로: 1.0
Y앞으로: 1.0
Z앞으로: 1.0
이렇게 입력 하셨다면 불사조가 (0,0,0)에서 (1,1,1)를 바라보게 됩니다.
(10.0, 10.0, 10.0)을 입력하셔도 (0,0,0)에서 (10,10,10)을 바라보게 되므로 위와 같은 뱡향이겠죠?
음수값도 당연히 가능합니다. 따라서 공간 한 점에서 모든 방향을 보도록 구현을 할 수 있다는 거죠.
그리고
X위로, Y위로, Z위로는 필요가 없고 연구를 안해서 저도 잘 모르겠습니다..;;
(X위로, Y위로, Z위로는 입력 값을 막 바꿔도 영향을 안받더라구요...)
이제 이 유닛이 카메라가 바라보는 방향을 따라 회전하는 방법을 알려드리겠습니다.
카메라가 바라보는 방향으로 위치백터(X,Y,Z)를 구할 수 있습니다.
바로 함수에서 '플레이어의 카메라의 Y축 회전'과 '플레이어의 카메라의 Z축 회전'의 각도값을 통해서 수학적으로
구하는 겁니다.
이것은 대학교 1학년 수학시간에 정식으로 배우지만 고등학생도 충분히 식을 세울수는 있습니다.
위의 식은 FPS 총게임에서 필수적으로 쓰이는 트리거 이기도 합니다.
아, 저게 먼소리냐 하시는 분들이 있을 텐데요
위치백터를 설명하자면 간단한데, 바로 (0,0,0)에서 (X,Y,Z)까지 화살표로 이은 백터입니다.
(X,Y,Z)값을 구했다면 그 의미는 카메라가 (0,0,0)에 있고 카메라가 (X,Y,Z)을 쳐다보는것과 같은 말이겠죠?
(X,Y,Z)값을 구하기 위해서는 '플레이어의 카메라의 Y축 회전'과 '플레이어의 카메라의 Z축 회전'의 각도값으로 식을 세워야 됩니다.
그 식은 이렇습니다.
X= 코사인(카메라의 Y축 회전) * 코사인(카메라의 Z축 회전)
Y= 코사인(카메라의 Y축 회전) * 사인(카메라의 Z축 회전)
Z= -사인(카메라의 Y축 회전)
(참고: 카메라의 Y축 회전의 각도의 0인값 기준이 다르기 때문에 대학수학에 나온 식과는 좀 다름 )
이것을
X앞으로
Y앞으로
Z앞으로
에 각각 입력하시면 됩니다.
카메라가 유닛에 따라가는 것은 다른 강좌를 참고하시기 바랍니다^^
예제맵 올렸습니다. 카메라 회전은 휠이나 Inset, Delete로 해보세요^^
이상으로 저의 강좌를 마치겠습니다.^^
|
||
|
|
||
|
|
||
|
© PlayXP Inc. All Rights Reserved.