Я извиняюсь за сломанный английский и надеюсь, что вы можете понять меняСтолкновение между 2 спрайтов волнуется
Здравствуйте Мне нужна ваша помощь, потому что теперь я застрял в течение нескольких часов, и он начинает сводить меня с ума. Мне нужно что-то пропустить, но не зная, что.
В настоящее время я разрабатываю игру с Phaser 2.2, и я пытаюсь создать систему столкновений.
Принцип прост зеленые зоны не должны быть доступны, а стена
Вот полный код
var game = new Phaser.Game (512, 512, Phaser.CANVAS 'phaser-example', {preload: preload, create: create, update: update render: render});
preload function() {
game.load.tilemap ('bar', 'assets/maps/bar.json', null, Phaser.Tilemap.TILED_JSON)
game.load.image ('cafe_tiles', 'assets/tiles/cafe.png');
game.load.image ('wall_tiles', 'assets/tiles/cafewall.png');
game.load.atlas ('player', 'assets/sprites/tremel.png', 'assets/sprites/tremel.json');
}
var map;
var layer_wall;
var layer_sol;
var layer_couche_1;
var layer_couche_2;
var layer_couche_3;
var keys;
var sprite;
var marker;
var player;
function create() {
game.physics.startSystem (Phaser.Physics.ARCADE);
map = game.add.tilemap ('bar');
map.addTilesetImage ('bar', 'cafe_tiles');
map.addTilesetImage ('cafewall', 'wall_tiles');
layer_sol map.createLayer = ('ground');
layer_wall map.createLayer = ('wall');
layer_couche_1 map.createLayer = ('couche_1');
layer_couche_2 map.createLayer = ('couche_2');
layer_couche_3 map.createLayer = ('couche_3');
map.setCollisionBetween (1, 1000, true, layer_wall)
map.setCollisionBetween (1, 1000, true, layer_couche_1)
map.setCollisionBetween (1, 1000, true, layer_couche_2)
map.setCollisionBetween (1, 1000, true, layer_couche_3)
layer_couche_1.debug = true;
layer_couche_2.debug = true;
layer_couche_3.debug = true;
layer_wall.debug = true;
layer_sol.resizeWorld();
player = game.add.sprite (200, 200, 'player', 'tremel1');
player.animations.add ('walk_down' Phaser.Animation.generateFrameNames ('tremel', 1, 4, '', 1), 30, true);
player.animations.add ('walk_up' Phaser.Animation.generateFrameNames ('tremel', 13, 16, '', 1), 30, true);
player.animations.add ('walk_left' Phaser.Animation.generateFrameNames ('tremel', 5, 8, '', 1), 30, true);
player.animations.add ('walk_right' Phaser.Animation.generateFrameNames ('tremel', 9, 12, '', 1), 30, true);
game.physics.arcade.enable (player);
player.body.collideWorldBounds = true;
game.input.keyboard.createCursorKeys keys =();
}
function update()
{
game.physics.arcade.collide (player, layer_couche_1)
if (keys.left.isDown)
{
player.x - = 3;
player.animations.play ('walk_left', 8, true);
}
else if (keys.right.isDown) {
player.x + = 3;
player.animations.play ('walk_right', 8, true);
}
else if (keys.up.isDown)
{
player.y - = 3;
player.animations.play ('walk_up', 8, true);
}
else if (keys.down.isDown)
{
player.y + = 3;
player.animations.play ('walk_down', 8, true);
}
else
{
player.animations.stop()
}
}
Как я уже много раз видели в сети + на в документе Phaser для управления столкновением должны быть указаны коллизии
map.setCollisionBetween (1, 1000, true, layer_wall)
map.setCollisionBetween (1, 1000, true, layer_couche_1)
map.setCollisionBetween (1, 1000, true, layer_couche_2)
map.setCollisionBetween (1, 1000, true, layer_couche_3)
Затем добавьте физический игрок
game.physics.arcade.enable (player);
И, наконец, как правило, просто добавьте это в обновление метода
game.physics.arcade.collide (player, layer_couche_1)
() За исключением game.physics.arcade.collide (плеер, layer_couche_1) Я всегда ложных ссылок и Я не знаю pk?
Заранее спасибо за помощь