Я работаю над 2D-игрой, в которой вы используете краску для добавления плиток к уровню, и сейчас я работаю над добавлением плиток деформации. Он настроен таким образом, чтобы определенные ориентированные на направление краски использовали две точки (начало и конец), чтобы определить, в каком направлении будут указывать плитки (влево, вправо, вверх, вниз.) У плиток основы есть эти точки, но они будут добавлен в два других списка (начало и конец деформации). Способ деформации работает так: если игрок нажмет одну плитку, он будет телепортирован в соответствующую плитку основы. Теперь, если я собираюсь заставить это работать должным образом, мне нужно сделать так, чтобы игрок не мог быть телепортирован в стену или с карты. Поэтому мне нужно переместить точку на открытую плитку ровно на одно расстояние от любых стен.
Каков был бы лучший способ сделать это?
Ответы:
Если все, что вы хотите сделать, это убедиться, что у клика по плитке есть открытые плитки, я бы просто создал функцию, которая проверяет плитки вокруг нее. И затем назовите это на нажатой плитке.
Вы можете установить его в (вложенный) цикл или просто создать для него операторы if. Итак, в псевдокоде:
Редактировать на основе комментария
Есть два способа справиться с ситуацией:
источник
Я думаю, что вам нужно будет найти ближайший «свободный» прямоугольник к плитке основы, куда игрок может поместиться.
Есть похожий вопрос по stackoverflow. Нажмите, чтобы увидеть .
источник