В настоящее время я разрабатываю часть игры, которая включает в себя перемещение плиток вокруг, которые могут выталкивать другие плитки, в основном так же, как и те головоломки, где одна часть отсутствует, где вам нужно перестроить изображение.Перемещение плитки вокруг без физического движка
Вопрос: Есть ли способ, без использования Box2D и столкновений обнаружения, чтобы получить плитки передвигаться правильно?
Это связан с моим предыдущим вопросом:
Snap squares to a grid algorithm
, который я задаю, потому что физический движок оставляет плитки повсюду.
Там может быть несколько штук не хватает (в отличие от этой картины, где есть ровно один)
Использование физического движка для этого было бы похоже на использование физического движка для добавления двух чисел. Если пользователь перемещает фрагмент в позиции сетки (x, y) в некотором направлении, переместите эту плиту * и все плитки, которые образуют смежный блок при перемещении в этом направлении *. Например. если движется вправо, 'for (i = x; i
Я не понимаю, как это обеспечивает решение. Как вы определяете, есть ли смежный блок в определенном направлении? Предположим, вы начали двигаться вправо, а затем двигаетесь влево. Эти плитки больше не «касаются», и поэтому движение вправо снова не должно их перемещать. Моя точка зрения, вы в конечном итоге придется решать для столкновения снова, так что ... физический движок. –
Непонятно из вашего вопроса (возможно, в связанном вопросе, но я не смотрел), но я полагаю, что «движение» пользователя в блоке может быть меньше полного квадрата сетки - например, только несколько пикселей? Это не меняет вещи принципиально: всякий раз, когда вы двигаетесь, скажем, в 10 пикселей, вы начинаете с 'z = 10' и продолжаете перемещать плитки, крайний левый край которых находится в <= z' пикселей справа от самого крайнего края текущего плитки , уменьшая «z» на размер зазора каждый раз. Когда 'z' станет отрицательным, вы можете остановиться. –