Направление controller'а на точку

Сообщения
90
Реакции
126
Помог
3 раз(а)
Есть модель пушки из TFC, в ней есть controller, который регулирует наклон дула по вертикали:
Без назви.png
На скрыншоте дуло направлено максимально вниз
Мне в коде плагина нужно направить это дуло на точку, взял код из подобного плагина:
Код:
    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)))
cannon_origin - точка дула, target_origin - точка, на которую нужно направить, svar_tilt_turret - pev_controller_1, что такое 830.0 не знаю, в плагине была константа SENTRYTILTRADIUS с этим значением и комментарий 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, только наоборот
Как это исправить? Я так понимаю, что мне нужно ограничить значения переменных, только вот каких и насколько
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Я давно уже експериментировал с контроллером? потому могу быть неточным. В модели указано в каком измерении измеряетсья угол: в градусах или радианах. А также в той модели пушек что мне предоставили, было два контролера по оси x и по оси y
 
Сообщения
90
Реакции
126
Помог
3 раз(а)
fantom, да, там 2 контроллера, один на дуло, а второй на поворот самой пушки вокруг оси Z, в чем измеряется не знаю, вот модель
 

Вложения

Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Сообщения
90
Реакции
126
Помог
3 раз(а)
fantom,
Код:
$controller 0 Dummy01 ZR 0.000000 360.000000
$controller 1 Dummy02 XR 50.000000 -50.000000
За дуло отвечает "controller 1"
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
swank, значит у вас там углы в градусах по x от 50 до -50. Как то так. Я в моделировании и векторах не силен. Так что извиняйте, что знал сам то и написал
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу