Обнаружение горизонтальных столкновений с помощью игрового движка Crafty.js
Я пытаюсь создать игру в стиле прорыва с непрерывным вертикальным движением игрока и только горизонтальным вводом. Мне нужно определить, попал ли кирпич по бокам или сверху / снизу. Не обнаружив этого, я не смог остановить движение игрока от перекрытия кирпичей, которые не были уничтожены. Я попытался определить, по какому краю многоугольника ударил объект игрока, используя это (вызывает первую функцию, когда обнаруживается столкновение, и вторую, когда justHit
установлено в false):
.onHit("brick", function() {
if (data[0]['normal']['y']==0) {
reverseDirection();
}
else {
this._hspeed = 0;
}
}, function() {
this._hspeed = 3;
})
Но у меня возникают 2 проблемы: значение datahit 'y' изменяется, когда сущность игрока достигает угла кирпича, и по какой-то причине компонент кирпича практически игнорируется, если рядом стоят два кирпича.
- Я разместил урезанный код на jsFiddle
- Вы можете увидеть примеры текущего обнаружения с помощью условных обозначений hitdata здесь
- И пример оригинальной ошибки столкновения без ограничений движения при столкновении на краю кирпича
1 ответ
Вы можете нарисовать несколько хитбоксов на объекте, а затем, в зависимости от того, какой блок запускает столкновение, выполнить ваше конкретное действие.