Я создаю двухмерную пошаговую стратегическую игру с использованием c ++ и SFML-2.0. Движение основано на расстоянии, а не на сетке, с несколькими различными фигурами в форме треугольника, каждый из которых в данный ход может либо вращаться на месте, либо двигаться вперед.
Движение будет работать таким образом, что игрок выбирает место для перемещения фигуры, что создает потенциальный путь для фигуры. Как только игрок подтвердит свое решение, фигура будет перемещаться по этому пути в нужное место. Траектории ограничены двумя факторами: расстоянием, расстоянием, на которое способна фигура, принимая во внимание любые повороты (поэтому, если есть кривая, это будет длина вдоль кривой, а не непосредственно от точки к точке); и угол поворота рулевого колеса, насколько далеко деталь может вращаться в любой (и до каждой) точке при движении (например, от -30 до 30 градусов).
Мой вопрос заключается в том, как мне определить диапазон потенциальных мест, которые игрок может выбрать для перемещения фигуры?
Я не совсем уверен, какие уравнения и / или алгоритм использовать здесь. Мой первоначальный план был чрезвычайно сложным, до такой степени, что его было практически невозможно реализовать, не говоря уже о том, чтобы объяснить, и в этот момент я полностью растерялся, когда проект застопорился.
Как я могу определить диапазон, в котором может двигаться юнит, учитывая его радиус поворота?
Например, на изображении ниже. Красные, синие и зеленые линии будут одинаковой длины. Фиолетовый кружок обозначает диапазон движения, который может перемещать юнит. (Форма, вероятно, неточная, и линии, вероятно, на самом деле не имеют одинаковую длину, но вы поняли идею)