私はPhaserフレームワークを使ってシンプルなタイルゲームをしていますが、アーケードコリジョンメソッドを使用すると残念ながら私は "バグ"を見つけました。私はすべてのタイルをお互いの上に完全に積み重ねたいが、上のタイルは常にそれらの下のタイルを通過する。フェイザー - アーケードコリジョンフィジックス
これはコードです:Chromeでさらに悪く見えるようだ
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>
。この問題は、4x4以上のタイルが使用されている場合にのみ発生することに注意することが重要です。