С трассерами есть проблема, не могу прицепить к аттачу, даже странно.
Пока есть время расскажу как решается, возможно кому-нибудь пригодится.
Вот что я понял:
Прицепить энтитьки типа
env_gunfire, правильно, т.е. на заданный аттач, можно только на тот аттач, который является не более чем вторым от основной кости.
Что бы понятнее, к основной кости модели можно прицепить аттач(массу аттачей), к этому аттачу прицепить другой аттач, к нему так же следующий. Все эти аттачи будут жестко связанны с основной костью модели.
Т.е. если env_gunfire цеплять на аттач №2 (или аттач №1) - прицепится так как нужно, центр будет от аттача.
Если цеплять на аттачи №3 или выше, то цепляться будет неправильно, центр будет идти от центра (Piviot) цепляемой модели(а не аттача), к которой относится аттач (в этом примере это атач №3), соответственно эта ошибка пойдет дальше, по другим аттачам.
--- Добавлено позже ---
Плавные повороты у меня уже давно перестали быть проблемой, еще с плагином RCDroneHelli.
Я ошибся здесь. Вернее, сама плавность поворота есть, но нет определенной точки останова этого поворота.
На Дроне, с управлением с клавиатуры(т.е. игроком), эта точка останова определенна самим игроком, а вот в случае с NPC эта точка должна быть как то заданна.
Я получаю необходимый угол поворота таким образом:
1. есть угол текущего положения Дрона(не вектор!).
2. есть угол направления на цель (угол получен из вектора направления).
3. вычитаю из нужного угла направления (например yaw) угол текущего положения Дрона(так-же yaw), получаю некую дельту. Это и есть тот угол на который нужно повернуть.
Поворачиваю 2 вариантами, один равномерно, таким макаром
angles[1]+=((delta < 0.0)?-360.0:360.0)*0.1;
это уже с определением направления поворота.
второй, с быстрым стартом и плавным окончанием поворота, таким макаром
yaw2[ent] -= (yaw2[ent]/180)*fSpeedRotationTurret;
это уменьшение глобального значения.
Если этот угол передать в глобал, то после выстрела можно плавно возвращать в начальную точку, за счет уменьшения значения этого угла.
У меня проблема сейчас именно с плавным наведением на цель. Не могу понять, как сделать уверенный останов на заданной точке. На других сайтах у кого спрашивал, советуют использовать библиотеки от си++. Но это не тот вариант.
делишь необходимый угол поворота на угловую скорость умноженную на кулдаун таймера и каждую итерацию таймера смещаешь на полученный угол.
Пример кода бы посмотреть, если можно.
Если я правильно понял должно быть так:
1. Угол поворота delta.
2. Скорость поворота fSpeedRotationTurret.
3. Таймер 0.1
angles[1] += delta/(fSpeedRotationTurret*0.1)
Без учета направления поворота.