You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:33:14