#1 2020-01-03 15:57:07

BANEBYTE
Участник
Зарегистрирован: 2020-01-03
Сообщений: 20

Billboard модель

Всем привет, как заставить модель постоянно смотреть на камеру?
Использовал ObjectSetRotation(model, 0, ObjectGetTurn(camPos), 0), но ничего не выходит.
Спасибо за ответ!

Offline

#2 2020-01-03 19:25:12

Gecko
Админ
Из РФ, Казань
Зарегистрирован: 2018-06-02
Сообщений: 164
Сайт

Re: Billboard модель

Попробуй ObjectPointToObject

Offline

#3 2020-01-03 19:53:32

BANEBYTE
Участник
Зарегистрирован: 2020-01-03
Сообщений: 20

Re: Billboard модель

Дело в том, что нужен поворот только по оси Y. Эта функция поворачивает по всем осям, насколько я понял

Offline

#4 2020-01-03 20:31:57

BANEBYTE
Участник
Зарегистрирован: 2020-01-03
Сообщений: 20

Re: Billboard модель

Вобщем, методом нехитрых манипуляций мне удалось решить эту задачу!
Для куба код следующий:

v1x = ObjectGetPosition(camPos,0) - ObjectGetPosition(obj,0);
v1z = ObjectGetPosition(camPos,2) - ObjectGetPosition(obj,2);
angle = MathDotProduct(v1x, 0, v1z, 1, 0, 0);
if (ObjectGetPositionZ(obj) > ObjectGetPositionZ(camPos)) {
    angle = -angle;
} else {
    angle = angle;
}
ObjectSetRotation(obj, 0, angle, 0);

Для плоскости чуть другой:

v1x = ObjectGetPosition(camPos,0) - ObjectGetPosition(obj,0);
v1z = ObjectGetPosition(camPos,2) - ObjectGetPosition(obj,2);
angle = MathDotProduct(v1x, 0, v1z, 0, 0, 1);
if (ObjectGetPositionX(obj) < ObjectGetPositionX(camPos)) {
    angle = -angle;
} else {
    angle = angle;
}
ObjectSetRotation(obj, 0, angle, 0);

Пришлось добавлять скрипт MathDotProduct дабы рассчитать угол между векторами.

Редактировался BANEBYTE (2020-01-03 20:53:00)

Offline

Подвал доски

Под управлением FluxBB