如何解决相位器3禁用推送对象
如果我推对象,则可以将其推到纹理上。如何禁用推入和将对象推入禁止区域的功能?
let map = this.make.tilemap({key: 'map'});
let tiles = map.addTilesetimage('map','tiles');
this.grass = map.createStaticLayer('Ground/Base',tiles,0);
let obstacles = map.createStaticLayer('tree',0);
obstacles.setCollisionByExclusion([-1]);
let player = new Player(this,50,100);
let enemy = new Enemy(this,100,100);
this.player = this.physics.add.existing(player);
this.enemy = this.physics.add.existing(enemy);
let players = this.physics.add.group();
players.addMultiple([
player,enemy
]);
this.physics.add.collider(players,obstacles);
this.physics.add.collider(players,players,(player1,player2) => {
player1.body.setVeLocity(0);
player2.body.setVeLocity(0);
});
玩家与敌人扩展了Phaser.Physics.Arcade.Sprite; setImmovable()-不变。
解决方法
我是使用Phaser的新手,但这是我在阅读github时发现的:
如果您使用的是Phaser v3.24.1或更低版本:
您可以检查SeparateX是处理被称为Push的函数的地方,here是被推动的地方,而here是被弹跳的地方,请看一下body1.velocity.x = avg + nv1 * body1.bounce.x
仅对nv1发生乘法运算,这就是为什么将bounce设置为0都没关系,但仍然会被反弹的原因。还存在SeparateY。
也许您可以利用Body#customSeparateX
和Body#customSeparateY
,example的优势。请注意,在该示例中,您需要构建自己的Push Process,但这是在object1移入object2之后发生的。
Phaser v3.50.0-beta.7:
最近在此commit中添加了新的可推送组件,因此您可以使用那个Phaser版本或等待正式发布。我没有测试它,但我假设它工作得很好。如果您现在想知道推送过程在哪里发生,可以检查ProcessX和ProcessY。
我希望它能对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。