私は、1つのレイヤだけがプレーヤに正しく衝突しているタイルマップを持っています。すべての例を経てきましたが、複数のレイヤーで作業するようには見えません。PhaserJSコリジョンタイルマップが動作しない
Iは、13層の合計すべてのJSONデータを含む1枚のタイルマップを持っているが、例えば、私は異なる層に衝突するプレーヤーの好み、異なるコールバックを有するであろう。3.
にのみ含まれています、例えば1つのスプライトマップ/タイルマップを使用して、範囲内などではアイテムをピックアップすることはできません。
var game = new Phaser.Game(1200, 780, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
function preload() {
this.load.tilemap('main_map', 'img here', null, Phaser.Tilemap.TILED_JSON);
this.load.image('sprite_map', 'img here');
this.load.image('player_image', 'img here');
}
var map;
var tileset;
var bLayer;
var wLayer;
var player;
var sLayer;
var cursors;
function create() {
game.physics.startSystem(Phaser.Physics.ARCADE);
// initiallize the tilemap
map = game.add.tilemap('main_map');
map.addTilesetImage('otherNew', 'sprite_map');
//draw the layers
bLayer = map.createLayer(0);
wLayer = map.createLayer(1);
sLayer = map.createLayer(2);
wLayer.resizeWorld();
player = game.add.sprite(600, 600, 'player_image');
game.physics.arcade.enable(player);
player.body.collideWorldBounds = true; // works
//game camera and movment keys here
}
function update() {
game.physics.arcade.collide(player, wLayer); // DOES NOT WORK
game.physics.arcade.collide(player, sLayer); // THIS WORKS
map.setCollision(1, true, wLayer); // DOES NOT WORK
map.setCollision(2, true, sLayer); // THIS WORKS
//movement here already works so didn't include
}
私は既にこの問題の原因を把握してくれてありがとうございました。下記の詳細な回答を投稿します。 – Paddy