Есть модель пушки из TFC, в ней есть controller, который регулирует наклон дула по вертикали:
На скрыншоте дуло направлено максимально вниз
Мне в коде плагина нужно направить это дуло на точку, взял код из подобного плагина:
cannon_origin - точка дула, target_origin - точка, на которую нужно направить, svar_tilt_turret - pev_controller_1, что такое 830.0 не знаю, в плагине была константа SENTRYTILTRADIUS с этим значением и комментарий
Все работает, но если target_origin находится над cannon_origin, то дуло направляется в противоположную сторону, максимально вниз, а не вверх, то же самое и при нахождении target_origin под cannon_origin, только наоборот
Как это исправить? Я так понимаю, что мне нужно ограничить значения переменных, только вот каких и насколько
На скрыншоте дуло направлено максимально вниз
Мне в коде плагина нужно направить это дуло на точку, взял код из подобного плагина:
Код:
new Float:delta[3]
xs_vec_sub(cannon_origin, target_origin, delta)
new Float:radians = floatatan(delta[2] / delta[0], radian)
angles[1] = RAD2DEG(radians)
if (target_origin[0] < cannon_origin[0])
angles[1] -= 180.0
set_pev(gun, pev_angles, angles)
new Float:h = target_origin[2] - cannon_origin[2]
new Float:b = vector_distance(cannon_origin, target_origin)
radians = floatatan(h / b, radian)
new Float:degreeByte = 830.0/256.0
set_pev(gun, svar_tilt_turret, floatround(127.0 - degreeByte * RAD2DEG(radians)))
Each degree corresponds to about 100/256 "bytes", = ~0,39 byte / degree (ok this is not entirely true, just tweaked for now with SENTRYTILTRADIUS)
Все работает, но если target_origin находится над cannon_origin, то дуло направляется в противоположную сторону, максимально вниз, а не вверх, то же самое и при нахождении target_origin под cannon_origin, только наоборот
Как это исправить? Я так понимаю, что мне нужно ограничить значения переменных, только вот каких и насколько