2016-12-14 7 views
3

私は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以上のタイルが使用されている場合にのみ発生することに注意することが重要です。

答えて

4

フェイザーアーケード物理学

代わり代わりにP2物理を使用することを検討して現在のバージョンに起因する制限のために、非常によくマルチボディコンタクトを処理および/または下記の議論を見ていません。


関連する問題