world vector of 이 기능을 Player가 아닌 위치값이 들어가면 뻗어버려서 만듬
정확히는 위치 X 지점과 임의 방향 A(degree 기준/수평, 수직)가 주어졌을때,
X 지점을 기준으로 추가값 B만큼 effect를 생성,
effect는 X 지점을 기준으로 방향값 A를 수평, 수직 방향으로 회전시켰을때
해당 회전 방향으로 따라서 '상대적 이동및 회전' 하는 수식
요컨데 플레이어와 별개인 포탑등 만드는데 사용 가능.
단점, 소수점자리가 짧아서 그런지 대략 5~10%수준의 위치 오차가 있음.
variables
{
player:
0: A_0watch_1wait_2playing
8: I_Building_Position
10: K_Player_Entitiy_IDs
}
action
{
"1"
Create Beam Effect(All Players(Team 1), Grapple Beam, Evaluate Once(Event Player.I_Building_Position) + (777 * Vector(
Cosine From Degrees(X Component Of(Event Player.K_Player_Entitiy_IDs[67])), 0, Sine From Degrees(X Component Of(
Event Player.K_Player_Entitiy_IDs[67]))) + 999 * Vector(-1 * Sine From Degrees(X Component Of(
Event Player.A_0watch_1wait_2playing[67])), 0, Cosine From Degrees(X Component Of(Event Player.K_Player_Entitiy_IDs[67]))))
* Cosine From Degrees(Y Component Of(Event Player.K_Player_Entitiy_IDs[67])) + Vector(-888 * Cosine From Degrees(
Y Component Of(Event Player.K_Player_Entitiy_IDs[67])) * Sine From Degrees(X Component Of(
Event Player.K_Player_Entitiy_IDs[67])), 888 * Cosine From Degrees(Y Component Of(Event Player.K_Player_Entitiy_IDs[67]))
+ Distance Between(Vector(777, 1, 999), Up) * Sine From Degrees(Y Component Of(Event Player.K_Player_Entitiy_IDs[67])),
-888 * Sine From Degrees(Y Component Of(Event Player.K_Player_Entitiy_IDs[67])) * Cosine From Degrees(X Component Of(
Event Player.K_Player_Entitiy_IDs[67]))), Evaluate Once(Event Player.I_Building_Position) + Vector(0, 1, 0), Color(White),
Visible To Position and Radius);
}
building position=>기준점
벡터(777,888,999)=>기준점에서 추가로 이동한 값(이펙트로 3D 모델링 할때 필요한 값. 원하는 x,y,z 좌표를 대신 넣으면 됨.)
K_Player_Entitiy_IDs[67]=>(수직 각도(degree),수평 각도(degree),0)로 이루어진 벡터값(나 쓰려고 함수 묶어둔거라 풀려면 풀어써도 됨)
[방정식]
A*(cos(수평),0 ,sin(수평))
+
B*(-sin(수평),0 ,cos(수평))
=>
(X , 0 , Z)
*
cos(수직)
+
(- Y*cos(수직)*sin(수평), Y*cos(수직)+C*sin(수직) ,- Y*sin(수직)*cos(수평))
=> 해당 값
https://blog.naver.com/kimsung9k/220697874968
참고
벡터(777,888,999)에 음수 들어가니 고장나는 버그 있음.