Phaser - 实现状态/更改活动脚本

时间:2016-04-11 15:49:09

标签: javascript

很抱歉,如果这是错误的地方,我不幸在其他任何地方都没有运气。

在Phaser中,我制作了一个tilemap和一个玩家精灵,这一切都完美地运用了P2物理学。我在tilemap中有一个门,当我进入时,我想要一个不同的脚本运行,将当前的tilemap更改为另一个并相应地移动玩家的位置。

我已经有一个基本的if语句,用于检查玩家的位置是否在门和控制台日志的范围内,这样可以正常工作。

代码:

var game = new Phaser.Game(560, 560, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update, render: render });

function preload() {

    game.load.tilemap('tilemap', 'assets/tilemaps/test.json', null, Phaser.Tilemap.TILED_JSON);
    game.load.image('tiles', 'assets/tilemaps/tileset.png');
    game.load.image('player', 'assets/images/player.png');

}
var player;
var cursors;
var map;
var layer;

function create() {
    map = game.add.tilemap('tilemap');
    map.addTilesetImage('basic', 'tiles');

    layer = map.createLayer('Background');
    layer2 = map.createLayer('Walls');

    layer.resizeWorld();

    game.physics.startSystem(Phaser.Physics.P2JS);
    game.physics.p2.setBoundsToWorld(true, true, true, true, false);

    map.setCollision(1, true, "Walls");
    game.physics.p2.convertTilemap(map, "Walls");


    player = game.add.sprite(game.world.centerX, game.world.centerY, 'player');
    game.physics.p2.enable(player);

    player.body.fixedRotation = true;

    player.body.clearShapes();  
    player.body.addRectangle(20, 0, 0, 0);

    cursors = game.input.keyboard.createCursorKeys();
    game.camera.follow(player);
    //player.body.debug = true;

}
function update() {

    player.body.setZeroVelocity();

    if (cursors.up.isDown)
    {
        player.body.moveUp(300)
    }
    else if (cursors.down.isDown)
    {
        player.body.moveDown(300);
    }

    if (cursors.left.isDown)
    {
        player.body.velocity.x = -300;
    }
    else if (cursors.right.isDown)
    {
        player.body.moveRight(300);
    }
    if (player.x > 248 && player.x < 311 && player.y < 25)
    {
        console.log("Door opened");
    }
}

function render() {

    game.debug.cameraInfo(game.camera, 32, 32);
    game.debug.spriteCoords(player, 32, 500);

}

0 个答案:

没有答案