Обнаружение горизонтальных столкновений с помощью игрового движка 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' изменяется, когда сущность игрока достигает угла кирпича, и по какой-то причине компонент кирпича практически игнорируется, если рядом стоят два кирпича.

1 ответ

Вы можете нарисовать несколько хитбоксов на объекте, а затем, в зависимости от того, какой блок запускает столкновение, выполнить ваше конкретное действие.

Другие вопросы по тегам