Не знаком с enchant.js, но обычно, как это обрабатывается, используются маски столкновения. Поэтому в зависимости от того, какой физический движок вы используете, должен быть способ установить значения маски столкновения (использовать целые числа) в физических телах. С Box2D, например, у вас есть два значения:
- категория биты
- бит маски
Категория является числовым значением, что этот объект или типа. Итак, если у вас есть куча переменных:
const PLAYER = 1;
const WATER = 2;
const BOAT = 4;
Вы должны установить биты категории в один из них. Биты маски - это значение того, с какими масками он может столкнуться.
const PlayerEntity = {
category: PLAYER,
mask: PLAYER | WATER
};
const WaterEntity = {
category: WATER,
mask: PLAYER
};
Что делать физические двигатели с внутренней стороны это & операция, чтобы увидеть, если значения категории и маски приравнять к чему-то другому, чем 0. Если это так, то есть столкновение.
Кажется, что enchant.js используют другой способ реализации препятствия на карте. У него есть массив вроде [0,0,0,1,1], который был назначен разработчиком при первой загрузке игры (1 символ не может пройти через), трудно переписать в игре. Но ваш ответ потрясающий и полезный для меня, спасибо ~~ – undefined000
А, хорошо. Я просмотрел документы, но не видел много конфликтов: – agmcleod
[http://enchantjs.com/tutorial/lets-start-with-enchant-js/#ref_10](http://enchantjs.com/ tutorial/lets-start-with-enchant-js/# ref_10) дает пример, чтобы добавить столкновение на карту, но при запуске игры его трудно отменить. – undefined000