Я бы расставил контрольные маршрутные точки, добавил к ним коллайдеры в виде триггеров. На них накинуть небольшой скрипт, говорящий какое действие нужно сделать, что бы попасть в следующую маршрутную точку(к примеру повернуть налево и продолжать идти). Когда NPC вступает с ним в коллизию(OnTriggerEnter), берет из него необходимые параметры для продолжения движения. Я так себе реализовывал.
Это если линейно и по кругу. А если рандомно передвижение по территории, то все с теми же контрольным точками, только нужно получить их все, выбрать случайную точку и обходом по графу идти до этой точки. Как только достиг, выбрал случайную следующую точку и пошел дальше.
Объяснение:
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
bool InArea = false;
Console.Write("R=");
double R = double.Parse(Console.ReadLine());
Console.Write("x=");
double x = double.Parse(Console.ReadLine());
Console.Write("y=");
double y = double.Parse(Console.ReadLine());
// Проверяем попадает ли в полукруг
if (x <= 0 && y >= 0 && x * x + y * y <= R * R) InArea = true;
// Проверяем попадает ли в первую половинку треугольника
// Уравнение прямой будет y=-2x
if (x > 0 && x <= R/2.0 && y >= -2*x && y<=0) InArea = true;
// Проверяем попадает ли во вторую половинку треугольника
// Уравнение прямой будет y=2x-2R
if (x > 0 && x <= R / 2.0 && y >= 2 * x - 2 * R && y <= 0) InArea = true;
if(InArea) Console.WriteLine("Точка принадлежит области");
else Console.WriteLine("Точка не принадлежит области");
Console.ReadLine();
}
}
}
Решение
Я бы расставил контрольные маршрутные точки, добавил к ним коллайдеры в виде триггеров. На них накинуть небольшой скрипт, говорящий какое действие нужно сделать, что бы попасть в следующую маршрутную точку(к примеру повернуть налево и продолжать идти). Когда NPC вступает с ним в коллизию(OnTriggerEnter), берет из него необходимые параметры для продолжения движения. Я так себе реализовывал.
Это если линейно и по кругу. А если рандомно передвижение по территории, то все с теми же контрольным точками, только нужно получить их все, выбрать случайную точку и обходом по графу идти до этой точки. Как только достиг, выбрал случайную следующую точку и пошел дальше.
Объяснение: