0

私は基本的に Phaser を使用してプラットフォーム ゲームを作成しようとしています。Tiled で JSON ファイルを作成し、それをワールドに追加しようとしています。実際に過去 3 時間追加しようとしてきましたが、成功しませんでした。多くの投稿やチュートリアルを見ましたが、何も機能していません。うまくいけば、誰かが助けることができますか?

これは私のhtmlです:

<!DOCTYPE html><html>

<head>
    <title>Platformer</title>
    <script type="text/javascript" src="phaser.js"></script>
    <script type="text/javascript" src="Game.js"></script>
</head>

<body>
    <div id="gameDiv"></div>
</body>

そして私のGame.js:

var game = new Phaser.Game(800,600,Phaser.AUTO,"gameDiv",{ preload: preload, create: create, update: update });

function preload() {
        game.load.tilemap("map","assets/LvlOneMap.json",null,Phaser.Tilemap.TILED_JSON);
        game.load.image("tiles","assets/spritesheet_2.png");
    }

var map;
var layer;

function create(){
    map = game.add.tilemap("map");
    map.addTilesetImage("Tiles","tiles");
    layer =  map.createLayer("GroundLayer");
    layer.resizeWorld();
}

function update() {
    //Gameloop
}

ここに私の「LvlOneMap.json」ファイルがあります:

{ "height":10,
 "layers":[
        {
         "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 153, 153, 155, 155, 155, 155, 155, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 122, 122, 0, 0, 153, 153, 155, 155, 155, 155, 155, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 155, 155, 155, 155, 155, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 153, 155, 155, 155, 155, 155, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, 123, 123, 123, 123, 153, 153, 155, 155, 155, 155, 155, 155, 0, 0, 0, 0, 0, 0, 123, 123, 123, 123, 123, 123, 153, 153, 153, 153, 153, 153, 153, 153, 155, 155, 155, 155, 155, 155, 155, 123, 123, 123, 123, 123, 123, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 155, 155, 155, 155, 155],
         "height":10,
         "name":"BackgroundLayer",
         "opacity":1,
         "type":"tilelayer",
         "visible":true,
         "width":27,
         "x":0,
         "y":0
        }, 
        {
         "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
         "height":10,
         "name":"GroundLayer",
         "opacity":1,
         "type":"tilelayer",
         "visible":true,
         "width":27,
         "x":0,
         "y":0
        }],
 "nextobjectid":1,
 "orientation":"orthogonal",
 "properties":
    {

    },
 "renderorder":"right-down",
 "tileheight":21,
 "tilesets":[
        {
         "firstgid":1,
         "image":"spritesheet_2.png",
         "imageheight":372,
         "imagewidth":694,
         "margin":3,
         "name":"Tiles",
         "properties":
            {

            },
         "spacing":2,
         "tilecount":480,
         "tileheight":21,
         "tilewidth":21,
         "transparentcolor":"#4a698c"
        }],
 "tilewidth":21,
 "version":1,
 "width":27
}

また、レイヤーの名前は Tiled のものと一致し、Tile Layer Format は CSV に設定されていることにも注意してください。

4

1 に答える 1

2

JSON を正しく読み取っている場合、そのGroundLayer中にオブジェクトはありません (データ オブジェクトはすべて 0 です)。

それ以外の場合、コードは私が比較した実際の例と一致するため、レイヤー データを保存したことを確認することをお勧めします。

に切り替えlayer = map.createLayer("GroundLayer");layer = map.createLayer("BackgroundLayer");、レイヤーが表示されるかどうかを確認してください。レイヤーには実際のデータが含まれているように見えます。

于 2016-01-01T16:32:14.303 に答える