簡體   English   中英

在phaser.js中關注相機

[英]follow camera in phaser.js

所以我剛剛想出了如何加載我在平鋪程序中創建的平鋪圖,它可以按預期工作,因此我嘗試使用示例中的一些代碼添加一個帶有基本跟隨攝像機的播放器,但除此以外,我什么都沒有發生現在正在查看tilemap的中間,這是我嘗試過的代碼:

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

function preload() {

    //  Tilemaps are split into two parts: The actual map data (usually stored in a CSV or JSON file) 
    //  and the tileset/s used to render the map.

    //  Here we'll load the tilemap data. The first parameter is a unique key for the map data.

    //  The second is a URL to the JSON file the map data is stored in. This is actually optional, you can pass the JSON object as the 3rd
    //  parameter if you already have it loaded (maybe via a 3rd party source or pre-generated). In which case pass 'null' as the URL and
    //  the JSON object as the 3rd parameter.

    //  The final one tells Phaser the foramt of the map data, in this case it's a JSON file exported from the Tiled map editor.
    //  This could be Phaser.Tilemap.CSV too.

    game.load.tilemap('gameMap', 'assets/tilemaps/gameMap2.json', null, Phaser.Tilemap.TILED_JSON);

    //  Next we load the tileset. This is just an image, loaded in via the normal way we load images:

    game.load.image('tiles', 'assets/tilemaps/gameMap.png');
    game.load.image('player','assets/img/player.gif');
}

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

function create() {

    game.stage.backgroundColor = '#787878';
    game.world.setBounds(0, 0, 3200, 3200);
    game.physics.startSystem(Phaser.Physics.P2JS);
    player = game.add.sprite(game.world.centerX, game.world.centerY, 'player');


        game.physics.p2.enable(player);

        cursors = game.input.keyboard.createCursorKeys();

        game.camera.follow(player);

    //  The 'mario' key here is the Loader key given in game.load.tilemap
    map = game.add.tilemap('gameMap');

    //  The first parameter is the tileset name, as specified in the Tiled map editor (and in the tilemap json file)
    //  The second parameter maps this name to the Phaser.Cache key 'tiles'
    map.addTilesetImage('spritesheet', 'tiles');

    //  Creates a layer from the World1 layer in the map data.
    //  A Layer is effectively like a Phaser.Sprite, so is added to the display list.
    layer = map.createLayer('Tile Layer 1');

    //  This resizes the game world to match the layer dimensions
    layer.resizeWorld();

}
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);
        }

    }
    function render() {

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

        }

我是使用相位器的新手,但不確定為什么它不能正常工作嗎?

在以這種方式實現了地圖的創建之后,嘗試創建角色的功能和相機的后續操作:

function create() {

   //Configure physical engine
   game.physics.startSystem(Phaser.Physics.P2JS);

   //Creating the tilemap
   game.stage.backgroundColor = '#787878';

   map = game.add.tilemap('mario');

   map.addTilesetImage('SuperMarioBros-World1-1', 'tiles');

   layer = map.createLayer('World1');

   layer.resizeWorld();

   //Configure player controls
   cursors = game.input.keyboard.createCursorKeys();

   //Player creation
   player = game.add.sprite(game.world.centerX, game.world.centerY, 'player');

   game.physics.p2.enable(player);

   game.camera.follow(player);

}

我以這個例子為基礎:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM