如何在Phaser中获取玩家碰撞的静态组具体对象?
解决Phaser静态组碰撞中获取具体对象的问题
你的问题出在碰撞回调函数的参数顺序上:Phaser的collider回调默认第一个参数是碰撞的第一个对象(也就是你的player),第二个参数才是静态组里的碰撞对象。你之前只写了一个参数,拿到的其实是player,而player没有设置name,所以打印出来是空字符串。
修改回调函数的参数即可解决:
this.physics.add.collider(player, signs, function (player, sign) { signName = sign.name; console.log(sign.name); // 现在能正确输出对应的sign1或sign2 });
额外验证要点:
- 确认创建静态组对象时,
name属性确实被正确赋值,比如sign1.name = "sign1";这一步没有遗漏或拼写错误 - 确保
signName变量在当前作用域内可访问(比如如果是局部变量,需要提前用let或var声明)
内容的提问来源于stack exchange,提问作者AshBoomstick1
相关产品推荐
相关产品推荐

