Javascript createFromObjects()在phaser中不工作?
我想在phaser中做一个游戏。我已经创建了一个带有objectlayer的tilemap。但是,当我试图将对象从对象层添加到组检查器时,重叠不起作用。 这是我的密码:Javascript createFromObjects()在phaser中不工作?,javascript,phaser-framework,Javascript,Phaser Framework,我想在phaser中做一个游戏。我已经创建了一个带有objectlayer的tilemap。但是,当我试图将对象从对象层添加到组检查器时,重叠不起作用。 这是我的密码: function preload() { game.load.spritesheet("bird","assets/flappybird.png",92,64,3); game.load.tilemap('map', 'assets/map.json', null, Phaser.Tilemap.TILED_JS
function preload()
{
game.load.spritesheet("bird","assets/flappybird.png",92,64,3);
game.load.tilemap('map', 'assets/map.json', null, Phaser.Tilemap.TILED_JSON);
game.load.image('tiles', 'assets/obstacle.png');
game.load.image('checktiles', 'assets/empty.png');
game.stage.backgroundColor = '#c9c9c9';
}
function create()
{
game.physics.startSystem(Phaser.Physics.ARCADE);
map = game.add.tilemap('map');
//OBSTACLES
map.addTilesetImage('obstacle', 'tiles');
layer = map.createLayer('Tilelaag 1');
layer.resizeWorld();
map.setCollisionBetween(1, 12);
//CHECKERS
checkers = game.add.group();
checkers.enableBody=true;
map.createFromObjects('Object Checkers', 5, 'checktiles', 0, true, false, checkers);
//PLAYER
player=game.add.sprite(92,game.world.heigth-300,"bird");
player.scale.setTo(0.5,0.5);
game.physics.arcade.enable(player);
player.body.gravity.y=300;
player.animations.add("fly",[0,1,2],10,true);
player.body.collideWorldBounds = true;
player.body.velocity.x=150;
//CURSORS
cursors=game.input.keyboard.createCursorKeys();
spacebar=game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
//CAMERA
game.camera.follow(player);
}
function update()
{
var hit=game.physics.arcade.collide(layer,player);
game.physics.arcade.overlap(player, checkers,Addpoint,null,this);
player.animations.play("fly");
if(spacebar.isDown)
{
player.body.velocity.y = -150;
}
if(hit)
{
game.state.restart();
}
}
function Addpoint()
{
console.log("Called");
}
我想在图层数据之后的JSON文件中,应该有如下内容:
...
{
"draworder":"topdown",
"height":0,
"name":"Object Checkers",
"objects":[
{
//First object
"height":43.5,
"id":2,
"name":"",
"rotation":0,
"type":"",
"visible":true,
"width":43.5,
"x":158.25,
"y":178,
"gid":5
},
{
//Second object
"height":43.5,
"id":9,
"name":"",
"rotation":0,
"type":"",
"visible":true,
"width":43.5,
"x":117.5,
"y":257.75,
"gid":5
},
{
//Third object (if it exists), etc...
...
当然,id、旋转、名称、宽度、长度和其他属性可能会有所不同,但GID不会。在数组的每个元素上都需要GID属性。在本例中,GID属性为5,您可以手动将其放置在每个对象中
验证后,它将执行以下操作:
var map, layer, checkers;
function create()
{
game.physics.startSystem(Phaser.Physics.ARCADE);
//Map
map = game.add.tilemap('map');
//I understand that here is the name of the tileset as specified in the map data.
map.addTilesetImage('tiles');
layer = map.createLayer('Tilelaag 1');
layer.resizeWorld();
map.setCollisionBetween(1, 12);
//Checkers
checkers = game.add.group();
checkers.enableBody = true;
/*
First parameter: string of map objects layer.
Second parameter: Gid.
Third parameter: sprite string to use.
Fourth parameter: value of the frame to initialize the object.
Fifth parameter: default status of the sprite.
Sixth parameter: autocull. The sprites that are autoculled are culled from the camera if out of its range..
Seventh parameter: the group is specified
*/
map.createFromObjects('Object Checkers', 5, 'checktiles', 0, true, false, checkers);
console.log(checkers.length);
//create player, controls, etc...
...
}
对象的位置可能会受到影响,您可以使用:
map.createFromObjects('Object Checkers', 5, 'checktiles', 0, true, false, checkers, Phaser.Sprite, false);
一个