好的,我在Phaser上有一个小游戏,它带有一个可以让玩家上下移动的滑块:
如您所见,滑块位于一条轨道上,假定该轨道会限制滑块可以到达的位置。目前,情况并非如此,滑块可以直接滑出轨道。
在移动滑块之前,如何检测目标位置是否有滑块轨道?
在这里,我为滑块和滑块轨道创建静态组。
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/),但这似乎改变了给定曲目的位置,而不仅仅是检测是否存在曲目。
答案 0 :(得分:1)
在我们通常开始聊天时,只是不要让这个问题没有答案,实际上,我在js/slider_actions.js
中看到了解决方案,但我只能说您可以使用velocity
,但我的水平很严重即使我在Phaser社区中很长一段时间也比你低;)
sliderTrackRight: function (slider) {
track = slider_tracks.children.entries.find(
function (track) {
return (
track.body.y == slider.body.y &&
track.body.x == (slider.body.x + block_size) &&
track.direction == 'horizontal'
)
}
);
return (typeof track != 'undefined');
},