Короче в итоге сделал предельно просто: посылается луч и в цикле немножко сдвигается то в один бок то в другой - как-то-так:
bool way_find_switch = false;//переключатель - указывает в какую сторону на данный момент двигаться
usi way_find_turn = 5;//на сколько градусов прибавляется поворот с каждым проходом в цикле
for (; way_find_turn <= 180; ){
xPointEntity(way_piv, PLAYER->poi);
if (!way_find_switch){xTurnEntity(way_piv, 0.0f, way_find_turn, 0.0f);}//смотрим вправо
if (way_find_switch){xTurnEntity(way_piv, 0.0f, -way_find_turn, 0.0f); way_find_turn += 5;}//и влево + плюсуем поворот
xTFormVector(0.0f, 0.0f, see_range - 3, way_piv, 0);//смотрим
xPhysicsRayCast(xEntityX(way_piv), xEntityY(way_piv), xEntityZ(way_piv), xEntityX(way_piv) + xTFormedX(), xEntityY(way_piv) + xTFormedY(), xEntityZ(way_piv) + xTFormedZ(), false);//присматриваемся)))
way_find_switch = !way_find_switch;
if (xPhysicsGetHitEntity(0) != 0){
if (xPhysicsGetHitEntity(0) == PLAYER->poi){
find = 1;
//игрок найден!)
break;
}
else {
}
}
else {//нашли ближайший обход)
}
}
С какой стороны ближе мы перестанем натыкатся на преграду - в эту сторону и двигаемся
Короче фигня но пока сойдет
ЗЫ: А можно по-подробнее о Spherecast и о триггерном состоянии? Собсно интересует их реализация в ксорсе)