Не знаю как написать логику, при которой булевы переменные вправо и влево будут устанавливаться в истину или ложь.
Что нужно: имеем 2 объекта, у первого объекта необходимо установить вправо/влево истиной или ложью в зависимости от того, больше ли его направление относительно второго объекта или меньше.
Примерно так:
Bool left, right;
Object player;
Object target;
var pp = player.global.pos();
var tp = target.global.pos();
var dir = (tp - pp).normalize();
//получаем текущее направление игрока
Quat pq = player.rot.toQuat().normalize();
//получаем направление к необходимому объекту
Quat tq = new Quat.fromVec3(dir);
/*Тут самое главное, нужно сравнить как-то кватернионы, и если
один больше другого, или меньше, установить то или иное
значение булевым переменным. Именно установить значения а не
вращать игрока в направлении объекта, это я знаю как сделать,
нужно именно установить в истину с ложью булевы, в зависимости
от того, больше ли текущее направление по отношению к объекту,
или же меньше*/
/*P.S конструкция вида (pq-tq) невозможна, а из math не знаю
что подходит в моем случае...*/
if (/*pq меньше чем tq*/) {
left = true;
right = false;
}
else if (/*pq больше чем tq*/) {
left = false;
right = true;
}
else {
left = false;
right = false;
}