【发布时间】:2020-02-29 14:02:09
【问题描述】:
我正在尝试使用 Phaser3 库创建类似“炸弹人”的游戏。 为此,我想定义 player 和 bricks 之间的碰撞关系, 更重要的是 - 检测相对于玩家的碰撞方向。
我注意到 touching 或 blocked 等身体属性,但它们始终设置为 false。 (请看下文)
//scene.js
// bricks static group
this.scene.physics.add.staticGroup({ immovable: true });
// player defined in external file (as sprite)
this.player = new Player(this, 90, 90)
// player.js
// ...
this.physics.add.collider(
this,
scene.bricks,
function(player, brick) {
if(player.body.touching.left) { //ALWAYS FALSE!!!
this.isBlockedFromLeft = true;
}, else if(player.body.touching.right) {
this.isBlockedFromRight = true; // ALWAYS FALSE!!!
}
},
null,
this
);
如果有任何帮助,我将不胜感激。这真让我抓狂。也许有更好的方法来做到这一点,我错过了一些东西......
提前致谢。
【问题讨论】:
-
不确定,如果它是相关的,但你在这里有一个错字:
else if(player.body.touching.rigt)。应该是else if(player.body.touching.right)。你有一个回购或在线代码游乐场的链接吗?我去看看。 -
确实是错字。帖子已被编辑。感谢您愿意帮助曼努埃尔!你可以在这里找到 git repo:github.com/tamir-nakar/bomber_man。当你运行它时,你会发现它很难移动。知道碰撞方向将帮助我修复它,但也许有一种本机方法(而不是发明轮子)。任何形式的帮助将不胜感激。谢谢!
-
也许您可以通过在gamedev.stackexchange.com 中发布您的问题来获得更多帮助
-
@TamirNakar 你的仓库过时了吗?我试图找到
player.js文件,但找不到! -
您会在“实体”目录下找到它
标签: phaser-framework