jQuery Collision Плагин для игрового персонажа / div - PullRequest
1 голос
/ 20 октября 2011

Я знаю, что есть пара похожих вопросов, но, к сожалению, они не совсем ответили на мою проблему ... насколько я могу судить.

За последние пару вечеров, когда у меня было немного свободного времени, я возился с созданием небольшого типа игры, в котором вы можете увидеть фрагмент / пример здесь (WASD для перемещения - Примечание: он еще не совместим с разными браузерами)

Я использую плагин под названием jQuery Collision , он теоретически делает именно то, что я хотел бы, но приведенные примеры сделаны с перетаскиваемыми объектами с помощью мыши, и у меня Немного трудностей, добавив его в мой эксперимент.

Я пытался добавить это к своей клавише 'W', пытаясь сказать, что когда игрок сталкивается с препятствием, препятствие должно быть удалено.

    if ($("#player").collision("#obstacle")) {
        $("#obstacle").remove();
    }

В настоящее время препятствие устраняется, но иногда неожиданно, если вы поместите игрока под препятствием и нажмете W (вверх), поле будет удалено, даже если игрок и препятствие еще не столкнулись.

Я также пробовал другие способы, которые я видел в демоверсии, которые я тоже не мог заставить работать:

    var collided = $("#player").collision("#obstacle");

    if (collided.length > 0) {
        $("#obstacle").remove()
    }

Может ли кто-нибудь пролить свет на то, что я делаю неправильно?

Примечание

Я знаю, что есть плагины, такие как gameQuery, поэтому, пожалуйста, не рекомендую использовать их вместо этого:)

1 Ответ

0 голосов
/ 03 января 2013

Попробуйте плагин, созданный для обработки перетаскивания:

http://sourceforge.net/projects/jquidragcollide/

Оригинал страдает от того факта, что при перетаскивании текущая позиция div еще не обновляется, покаты отпускаешь.Он должен был быть статическим средством проверки столкновений.Если вы внимательно посмотрите на примеры:

http://eruciform.com/jquerycollision/

... вы увидите, что при перетаскивании «перекрытие» находится на один кадр позади.Чтобы не делать предположений о предполагаемом использовании модуля (т. Е. Перетаскивании), я оставил его как использующий любые координаты, которые, как думает jQuery, имеет значение div.И именно поэтому я создал плагин для перетаскивания дополнений.У него также есть много других наворотов, таких как «предотвращение столкновений» во время перетаскивания.

...