У меня есть зайка и он попал в беду!!! Сам я справится не могу, так как не достаточно знаний в области тригонометрии/векторной алгебры/и прочих дисциплинах(пинал очень интересные вещи и считал ворон во время учёбы в школе).
Прошу у вас помощи в спасении моего зайки! Кто хоть как то помогает, тот автоматически получает титул "Спасатель пушистика"!
О самой беде:
Зайку окружают злые волки что бы его съесть. Волк бывает один, а бывает несколько. Зайка сидит жопкой на NavMesh Surface(навигация версии 2.0 https://github.com/Unity-Technologies/NavMeshComponents) и его задача найти путь, по которому следует выбраться.
У зайки есть триггер с радиусом в 8.5, и он этим триггером обнаруживает волков. Первое что приходит в голову, брать и разворачиваться от волка в обратную сторону. А именно: получить угол(для направления) и дистанцию от волка к зайцу, умножить на 10 и затем:
Синтаксис:
Используется csharp
Vector3 point = wolf.position + (direction * distance);
Таким образом получаем точку как можно дальше(аж за картой) и устанавливаем для NavMesh Agent'а. Как итог, заяц добежит до края леса и остановится в самой крайней точке, так как заканчивается Surface, и в данной ситуации меня всё устраивает.
Когда на охоту выходят двое волков, можно получить среднее арифметическое между значениями их углов к зайцу и бежать в обратном направлении, но это не всегда работает.
К примеру: от зайца до волков 50градусов и 140градусов , среднее между ними будет 95, а обратное направление будет под углом 275(зайка спокойно убегает), но в случае с 45 и 300, угол будет уже 172.5(который как бы устраивает...),но вот обратное ему 352.5, и при таком направлении его всё таки скушает какой то из волков). Это даже не учитывая дистанцию , которая может быть разной от зайца к волкам.
Думаю в случае, когда его окружили 4-8 волков и выход без урона не найти, то там уже зайка вынужден будет получить пару укусов, но все же убежать в ту сторону, где их будет меньше.
Как же всё таки быть зайке в данной ситуации?