phaser-framework - Phaser 3:如何检测位置是否有组成员
问题描述
好的,我在 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/),但它似乎改变了给定轨道的位置,而不仅仅是检测那里是否有轨道.
解决方案
只是不要让这个问题没有答案,因为我们通常开始聊天,实际上我在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');
},
推荐阅读
- r - 使用 ggplot2 在 R 中绘制空间线
- wordpress - 我的 wordpress 网站不加载内容
- reactjs - Axios 有 CORS 问题
- django - 表单未显示 ValidationError
- ruby-on-rails - 如果使用 devise 出现错误,则将 css 类添加到输入
- wso2 - 从 DAS 升级 WSO2 SP
- android - React Native Navigation v1 安卓黑屏
- reactjs - 要使用 React,我应该使用 nodejs (express) 吗?
- jquery - 复选框选择的多个实例
- python - 对数字范围内的数字进行四舍五入