2015-01-21 2 views
1

Я извиняюсь за сломанный английский и надеюсь, что вы можете понять меняСтолкновение между 2 спрайтов волнуется

Здравствуйте Мне нужна ваша помощь, потому что теперь я застрял в течение нескольких часов, и он начинает сводить меня с ума. Мне нужно что-то пропустить, но не зная, что.

В настоящее время я разрабатываю игру с Phaser 2.2, и я пытаюсь создать систему столкновений.

Принцип прост зеленые зоны не должны быть доступны, а стена

The exemple

Вот полный код

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?

Заранее спасибо за помощь

ответ

0

player.x этого положение спрайта, player.body.x этом положения аркадных физик так в методе обновления вам необходимо обновить player.body.x вместо игрока .x

 Смежные вопросы

  • Нет связанных вопросов^_^