Я строю двухмерную RPG-систему на основе плиток в Pygame и в настоящее время пытаюсь заставить одну «сущность» двигаться к другой. На этом пути есть препятствия, но метод перемещения (направления) объекта потерпит неудачу (безвредно), если он достигнет одного. Существует также метод is_direction_clear (direction), который может определить, может ли направление быть перемещено.
Текущий код:
x_dist = self.map_x-self.target.map_x
y_dist = self.map_y-self.target.map_y
#If further in terms of x...
if abs(x_dist) >= abs(y_dist):
#...seek the target in the x direction
if x_dist >= 0:
self.move(3)
elif x_dist <= 0:
self.move(1)
#If further in terms of y...
elif abs(y_dist) >= abs(x_dist):
#...seek the target in the y direction
if y_dist >= 0:
self.move(2)
elif y_dist <= 0:
self.move(0)
Таким образом, этот алгоритм позволяет одному объекту преследовать другой в вакууме, но они застряли, если врезались в стену и просто продолжали идти в нее.
Как заставить его обнаружить стену перед ней и go в другом направлении?