Чтобы определить, когда 1 изображение находится в пределах диапазона другого изображения на холсте я:Javascript холст блок событие столкновения движение
if (herohitboxX <= (villageMain.x + 200) && villageMain.x <= (herohitboxX) && herohitboxY <= (villageMain.y + 200) && villageMain.y <= (herohitboxY)) { console.log('inside bldg') }
, который прекрасно работает, но у меня огромная проблема, выясняя, как не позволить игрок входит в здание/дерево/объект, но в то же время позволяет им отодвинуться от объекта.
я могу сделать игрок слайд через объект, перемещая их, касаясь, и блокировать их от возвращения из того, что 1 направлении, но я не могу блокировать движение со всех 4-х сторон ....
Основная проблема заключается в том, что он обнаруживает, что они перекрываются, но он не говорит вам, в каком направлении идет игрок. Простое отрицание направления движения игроков, когда они находятся внутри здания, не работало (если они нажимают правый и касающийся объект, идите налево, иначе, если они не касаются и не нажимают вправо, идите направо). Или, если они идут вверх и прикоснутся к зданию, отправьте DOWN. Разве это не работает ????
Единственное, что я могу придумать, это сделать 4 тонких прямоугольника/линий, представляющих каждую сторону периметра, а затем просто не позволять движению со стороны, с которой она обращена. Но должен быть какой-то более простой способ! Что это?
Сохранить предыдущее местоположение и сделать сравнение ?? Прямо сейчас на самом деле нет направления движения, если вы обнаружите UP в ключевом прослушивателе, он перемещает фоновое изображение и корректирует положение спрайтов игроков. Какие-нибудь советы?
Так что если я правильно понимаю, проблема возникает, когда игрок и некоторые препятствия частично перекрываются. Но если ваш алгоритм правильный, вы никогда не должны доходить до такого состояния, верно? – user123444555621
@ Pumbaa80: Похоже, что, возможно, игрок может быть поставлен с исходной позицией, нарушающей правило перекрытия. Поэтому, если бы я был user1108224, я бы проверял, чтобы вы выполняли инициализацию любых перекрывающихся объектов. – buley
Он просто обнаруживает, когда они перекрываются, я использую его для нескольких десятков объектов, чтобы запускать меню в игре, заполнять статистику, открывать меню магазина, чтобы покупать/продавать предметы, элементы пикапа, набегая на них, которые все срабатывают при столкновении . Проблема, с которой я сталкиваюсь, это то, что я не могу предотвратить столкновение, которое я хочу сделать для некоторых объектов, таких как здания и деревья. Если игрок приближается слева от объекта, когда он добирается до объекта, я не хочу, чтобы игрок мог больше двигаться, но все же хочу, чтобы они могли перемещать все другие направления ... – user1108224