作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一款平台游戏,其中有玩家和一些 Prop 。为了检查碰撞,我使用了 matterjs collisionactive 函数:
this.matter.world.on("collisionactive", (e, o1, o2) => {
});
在函数内部,我需要从游戏中移除 powerup。所以我尝试了 o1.destroy
,其中 o1 是通电。这没有用,也没有返回错误。我还尝试了 this.matter.world.remove(o1);
。这也不起作用。为什么我无法移除对象?任何帮助是极大的赞赏。谢谢!
最佳答案
有一些问题,如果您只从他们的世界中移除对象。最好/最干净的解决方案是使用 GameObject
的 destroy()
方法。
我会使用事件 collisionstart
,检查 player
是否与 powerup
交互,然后销毁 gameObject
。这也将清除物理对象。
这是一个示例,基于上一个答案:
let playertouchingground = true
const config = {
type: Phaser.AUTO,
width: 400,
height: 180,
physics: {
default: "matter",
matter: {
debug: true
}
},
scene: {
create,
update
},
};
var game = new Phaser.Game(config);
function create() {
ground = this.matter.add.sprite(0, 180, 'platform').setStatic(true).setScale(100, 1).setOrigin(0)
ground.body.label = 'platform'
ground.setCollisionCategory(1)
player = this.matter.add.sprite(125, 140, 'player')
player.body.label = 'player'
player.setCollisionGroup(2)
player.setFixedRotation()
powerup = this.matter.add.sprite(140, 10, 'powerup').setBody('circle')
powerup.body.label = 'powerup'
powerup.setCollisionGroup(2)
this.matter.world.on("collisionstart", (e, o1, o2) => {
if([o1.label, o2.label].indexOf('powerup') != -1 &&
[o1.label, o2.label].indexOf('player') != -1){
o2.gameObject.destroy();
}
});
this.matter.world.on("collisionend", (e, o1, o2) => {
playertouchingground = true;
}
)
this.cursors = this.input.keyboard.createCursorKeys();
}
function update() {
if (this.cursors.left.isDown ) {
player.setVelocityX(-3)
} else if (this.cursors.right.isDown ) {
player.setVelocityX(3)
} else {
player.setVelocityX(0);
}
if (this.cursors.up.isDown && playertouchingground ) {
player.setVelocityY(-8)
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/3.23.0/phaser.min.js" ></script>
btw.:
this.matter.world.remove(o1)
should work, but doesn't hide/remove the image, as mentioned in this post. The solution is shown in the code above, since it works.
关于collision-detection - 如何在碰撞动态移相器js中删除物质js对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71707797/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!