Хорошо, у меня есть небольшая игра на Phaser с ползунком, который игрок может перемещать вверх или вниз:
![image of slider on a track while a stick figure looks on](https://i.stack.imgur.com/tXtdv.png)
Как вы можете видеть, слайдер находится на дорожке, которая, как можно было бы предположить, ограничивает область его перемещения. На данный момент это не так, и ползунок может бежать прямо с рельса.
Как я могу определить, есть ли дорожка ползунка в целевом местоположении, прежде чем двигать ползунок?
Здесь я создаю статические группы для слайдера и дорожки слайдера.
sliders = this.physics.add.staticGroup();
slider_tracks = this.physics.add.staticGroup();
Вот где сами объекты добавляются в игру:
add_slider: function (x, y, data) {
map.add_slider_track(x, y, data);
var slider = sliders.create(x, y, data.direction + '_slider');
for (var key in data) {
slider[key] = data[key];
}
},
add_slider_track: function (x, y, data) {
slider_tracks.create(x, y, data.direction + '_track');
},
А вот функции, которые его перемещают:
hitSlider: function (player, slider) {
if (slider.direction == 'vertical') {
if (player.body.onFloor() && player.slamming) {
interaction.moveSliderDown(slider)
} else if (player.body.onCeiling()) {
interaction.moveSliderUp(slider);
}
}
player.slamming = false;
},
moveSliderUp: function (slider) {
slider.setY(slider.y - block_size);
slider.body.position.y = (slider.y - (block_size / 2));
player.setVelocityY(100);
},
moveSliderDown: function (slider) {
slider.setY(slider.y + block_size);
slider.body.position.y = (slider.y - (block_size / 2));
}
Я пытался использовать slider_track.getFirst
(https://rexrainbow.github.io/phaser3-rex-notes/docs/site/group/), но, похоже, он изменяет местоположение данного фрагмента трека, а не просто обнаруживает, есть ли там один.