ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript-Phaser-街机碰撞物理

2019-10-26 11:44:25  阅读:370  来源: 互联网

标签:phaser-framework javascript


我正在使用Phaser框架开发一个简单的方块游戏,但不幸的是,在使用Arcade碰撞方法时,我偶然发现了一个“错误”.我希望所有图块都完美地堆叠在一起,但最上面的图块始终穿过它们下面的图块.

这是代码:

var game = new Phaser.Game(700, 700, Phaser.AUTO, 'phaser-demo', {
  create: create,
  update: update
});

var tiles, textureRegistry = {};

function create() {
  game.physics.startSystem(Phaser.Physics.ARCADE);
  game.physics.arcade.gravity.y = 500;

  tiles = game.add.group();
  tiles.physicsBodyType = Phaser.Physics.ARCADE;
  tiles.enableBody = true;

  for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
      tiles.add(game.add.sprite(i * 70, j * 70, createBlock(64, 'red')));
    }
  }
  tiles.setAll('body.collideWorldBounds', true);
  tiles.setAll('body.bounce', new Phaser.Point(0.5, 0.5));

}

function update() {
  game.physics.arcade.collide(tiles);
}

function createBlock(size, color) {
  var name = size + '_' + color;
  if (textureRegistry[name]) {
    return textureRegistry[name];
  }

  var bmd = game.add.bitmapData(size, size);
  bmd.ctx.fillStyle = color;
  bmd.ctx.fillRect(0, 0, size, size);
  textureRegistry[name] = bmd;
  return bmd;
}
<script src="https://github.com/photonstorm/phaser/releases/download/v2.6.2/phaser.min.js"></script>

在Chrome上看起来更糟.重要的是要注意,该问题仅在使用4×4或更多的图块时才会发生.

解决方法:

Phaser Arcade Physics doesn’t handle multi-body contact very well, due to limitations on current version

Alternatively consider using P2 physics instead and/or see discussions below.

> https://github.com/photonstorm/phaser/issues/1513
> http://www.html5gamedevs.com/topic/8191-vertical-sprite-collision-overlapfallthrough/
> http://www.html5gamedevs.com/topic/7810-how-to-increase-rigidity-of-arcade-sprite-bodies/

是的,这是Arcade Physics分离代码中的一个缺陷,该代码不是为这种多体接触而设计的.东西堆叠得越多,它变得越怪异. @ lewster32

标签:phaser-framework,javascript
来源: https://codeday.me/bug/20191026/1936490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有