16 may
2012
Вращение юнита в 3D от Doc
Added by ScorpioT1000,
published
Способ реализации:
cJass
Тип:
Алгоритм
Вращение юнита в 3D.
A,B,C - углы на которые будет поворачиваться юнит в пространстве вокруг точки X1, Y1, Z1
A,B,C - углы на которые будет поворачиваться юнит в пространстве вокруг точки X1, Y1, Z1
void RotateUnit(unit u, float X1, float Y1, float Z1, float A, float B, float C){
float a1, b1, a2, b2, a3, b3, X2, Y2, Z2
X2 = GetUnitX(u)
Y2 = GetUnitY(u)
Z2 = GetUnitFlyHeight(u)
d = SquareRoot((X2 - X1) * (X2 - X1) + (Y2 - Y1) * (Y2 - Y1) + (Z2 - Z1) * (Z2 - Z1))
a1 = Atan2(Y2 - Y1, X2 - X1) + A
b1 = Atan2(SquareRoot((X2 - X1) * (X2 - X1) + (Y2 - Y1) * (Y2 - Y1)), Z2 - Z1)
X2 = X1 + d * Sin (b1) * Cos(a1)
Y2 = Y1 + d * Sin(b1) * Sin(a1)
Z2 = Z1 + d * Cos(b1)
a2 = Atan2(Y2 - Y1, Z2 - Z1) + B
b2 = Atan2(SquareRoot((Z2 - Z1) * (Z2 - Z1) + (Y2 - Y1) * (Y2 - Y1)), X2 - X1)
X2 = X1 + d * Cos(b2)
Y2 = Y1 + d * Sin(b2) * Sin(a2)
Z2 = Z1 + d * Sin(b2) * Cos(a2)
a3 = Atan2(Z2 - Z1, X2 - X1) + C
b3 = Atan2(SquareRoot((X2 - X1) * (X2 - X1) + (Z2 - Z1) * (Z2 - Z1)), Y2 - Y1)
X2 = X1 + d * Sin(b3) * Cos(a3)
Y2 = Y1 + d * Cos(b3)
Z2 = Z1 + d * Sin(b3) * Sin(a3)
SetUnitX(u, X2)
SetUnitY(u, Y2)
SetUnitFlyHeight(u, Z2, 0.0)
}
To leave a comment please sign in to the site.
Блог
Проекты :
Edited by vlad_C0M
Блог
Проекты :
Unity - скрытая папка
Блог
Энивей, это очень плохой пример, сейчас я бы сделал через матрицы.
Блог
Проекты :
Хотя тут дело не в point... и его правильного перемещения
Блог
Блог
Проекты :
Unity - скрытая папка
Блог
Проекты :
Блог
vlad_C0M, да, типа того.