Моя собственная модель в деле.js
Я использую Matter.js для программирования простой игры. У меня проблемы с выяснением, как лучше всего подключить мою модель к Matter.js.
В моей игре есть бактерии, и я хотел бы иметь класс Bacterium
так что я могу управлять этими парнями. В моей текущей реализации этот класс создает и хранит свой собственный Matter.Body
, который я передаю на двигатель. Здесь я сталкиваюсь с неприятностями. Я хотел бы обновить некоторые аспекты моей модели, когда бактерии сталкиваются друг с другом и со стенами, но я не могу найти эффективный способ определить, какие бактерии в моей модели сталкиваются в моем обработчике столкновений Matter.
Должен ли я продлить Matter.Body
прототип для этого? Какой-нибудь совет или более важные проекты в Интернете, на которые мне стоит взглянуть?
2 ответа
Посмотрите на Render.collisions
функция в Render.js
учебный класс. Эта функция рендерит все коллизии, которые происходят в кадре, который отображается. Я думаю, понимая, как они это делают, вы можете решить, что вам нужно в вашей ситуации.
Помните, что в файлевеей используется игровой цикл, который действительно отличается от настройки на основе событий, с которой обычно работают веб-страницы. Посмотрите на Render.js
класс, чтобы лучше понять, как работать с двигателем, который обеспечивает материя.
Не расширяйте прототипы, которыми вы не владеете. Добавление тела MJS в качестве поля в ваш класс — прекрасный подход, и вы можете отслеживать, какие тела сталкиваются, используяMap
чтобы связать каждое тело MJS с соответствующим экземпляром вашего класса.
Вот пример, который подключается кcollisionStart
иcollisionEnd
События MJS для вызова методов в пользовательском классе, который составляет тела MJS.
The Body.label
Свойство может помочь в различении типов тела, но, в конечном счете, MJS не предлагает никакого решения для управления сущностями, кроме этого. Я предостерегаю от чрезмерной зависимости от.label
. В конечном счете, вы сами выбираете дизайн, который соответствует потребностям вашего приложения.