Я хотел бы написать «игру», в которой вы можете разместить препятствие (красное), а затем черная точка пытается избежать его и добраться до зеленой цели.
Я использую очень простой способ избежать этого: если черная точка близка к красной, она меняет свое направление и некоторое время движется, затем она движется вперед к зеленой точке.
Как я могу создать «гладкий» путь для «игрока», управляемого компьютером?
Изменить: не гладкость является основным пунктом, но чтобы избежать красной блокирующей "стены" и не врезаться в нее, а затем избегать ее.
Как я могу реализовать какой-то алгоритм поиска пути, если у меня всего 3 точки?
(И что могло бы сделать вещи намного сложнее, если бы вы могли разместить несколько препятствий?)
источник
Поведение рулевого управления предназначено для решения именно этой проблемы.
http://www.red3d.com/cwr/steer/
По сути, вы бы совмещали поведение избегания препятствий с, вероятно, поведением поиска или преследования. На этой странице есть куча java-анимаций различных типов поведения и того, что они делают. Существует несколько реализаций рулевого управления с открытым исходным кодом. Вот один
источник
Легче всего попробовать иметь невидимую точку, которая идет впереди черной точки и выполняет путь в вашем первом изображении. Черная точка затем следует за невидимой точкой на небольшом расстоянии позади.
Я видел эту работу с хорошими результатами, но, конечно, может не соответствовать вашим потребностям.
источник