Сообщение от ANIK123
wolfhound512 - еще раз спасибо!)
Возник еще другой маленьий вопросик:
Использую функцию xPointEntity(a, b, 0.1f) - но объект поворачивается к другому объекту моментально - не смотря на указанное Мной 0.1f (пробовал и другие значения)
зы: в документации третий параметр значится как "ролл" - а обьект должен поворачиваться по "яве" - в этом трабла чтоли?
Еще пробовал поворачивать энтити по вектору (xAlignToVector()) - результат даже не могу описать)
Как быть то?
|
1. Первое запоминаешь текущий углы нацеливаемого объекта.
2. xPointEntity(a, b) считываешь нужный угол.
3. Ставишь объекту угол равный первому плюс некоторая часть разницы между вторым и первым положением.
Можно сделать что бы за кадр поворачивалось на фиксированный угол либо на часть всей дельты. В первом варианте будет поворот с равной угловой скоростью, а во втором при приближение к нужному углу объект будет более реалистично притормаживать.
Впрочем, счас гуры укажут более эффективный способ
иксАлигнтовектор работает еще лучше. Вектор к которому нужно отравнять: Позиция цели минус позиция пушки. Вектор по которому стоит пушка это (cos(pitch)*sin(yaw);cos(yaw);sin(pitch)*sin(yaw)) хз почему, но это так. Далее из вектора к которому нужно прицелить вычитаем текущий вектор положения пушки или чего там у тебя. Получается вектор от конца текущего положения к концу нужного. Делишь этот третий вектор на кол-во кадров за которое нужно довернуть до цели. Прибавляешь к вектору текущей ориентации поделенный вектор дельты. Прицеливаешь ентити к итогу. Тоже профит.