2016-07-31 2 views
0

Делаю RPG игра с enchant.js, а затем я создал карту, как это: sample mapКак изменить правила препятствия в enchant.js?

игроки не могут пройти через воду, но когда игроки берут лодку, они могут пройти. Мой вопрос в том, должен ли мне переписывать collistionData каждый раз, когда игроки ходят/катаются на лодках? Есть ли простой способ сделать это, если карта большая? Спасибо за помощь.

ответ

0

Не знаком с enchant.js, но обычно, как это обрабатывается, используются маски столкновения. Поэтому в зависимости от того, какой физический движок вы используете, должен быть способ установить значения маски столкновения (использовать целые числа) в физических телах. С Box2D, например, у вас есть два значения:

  1. категория биты
  2. бит маски

Категория является числовым значением, что этот объект или типа. Итак, если у вас есть куча переменных:

const PLAYER = 1; 
const WATER = 2; 
const BOAT = 4; 

Вы должны установить биты категории в один из них. Биты маски - это значение того, с какими масками он может столкнуться.

const PlayerEntity = { 
    category: PLAYER, 
    mask: PLAYER | WATER 
}; 

const WaterEntity = { 
    category: WATER, 
    mask: PLAYER 
}; 

Что делать физические двигатели с внутренней стороны это & операция, чтобы увидеть, если значения категории и маски приравнять к чему-то другому, чем 0. Если это так, то есть столкновение.

+0

Кажется, что enchant.js используют другой способ реализации препятствия на карте. У него есть массив вроде [0,0,0,1,1], который был назначен разработчиком при первой загрузке игры (1 символ не может пройти через), трудно переписать в игре. Но ваш ответ потрясающий и полезный для меня, спасибо ~~ – undefined000

+0

А, хорошо. Я просмотрел документы, но не видел много конфликтов: – agmcleod

+0

[http://enchantjs.com/tutorial/lets-start-with-enchant-js/#ref_10](http://enchantjs.com/ tutorial/lets-start-with-enchant-js/# ref_10) дает пример, чтобы добавить столкновение на карту, но при запуске игры его трудно отменить. – undefined000

 Смежные вопросы

  • Нет связанных вопросов^_^