如何将精灵 sheet 及其 JSON 文件导入到我的 Phaser 游戏中?
How do I import a sprite sheet with its JSON file into my phaser game?
我正在使用 Phaser 游戏引擎创建游戏。我创建了一个精灵 sheet 并下载了它。它带有带有我的帧的 256∆×∆384 .png 文件和一个 JSON 文件,我认为该文件包含有关如何拆分帧的信息。我不知道如何将带有 JSON 文件的精灵 sheet 导入到我的 preload() 函数中。我尝试使用以下代码,但它不起作用。任何帮助将不胜感激。
var game = new Phaser.Game(1200, 750, Phaser.AUTO, '', { preload: preload, create: create, update: update });
function preload(){
game.load.image('background', 'assets2/background.png');
game.load.json('robot', 'assets2/VillainSpriteSheet_json.json');
game.load.spritesheet('robot', 'assets2/VillainSpriteSheet.png');
}
var villain;
function create(){
var villainjson = game.cache.getJSON('robot');
//enable physics
game.physics.startSystem(Phaser.Physics.ARCADE);
//create background
var background = game.add.sprite(0, 0, 'background');
//villain
villain = game.add.sprite(50, 50, 'robot');
//enable phsyics
game.physics.arcade.enable(villain);
villain.body.bounce.y = .2;
villain.body.gravity.y = 300;
villain.body.collideWorldBounds = true;
}
您不需要 jQuery 的 getJSON()。你想要移相器。
它会像
p = new Phaser.Game(...);
p.cache.getJSON('foo');
p.load.image(...);
我认为您混淆了两个框架,jQuery 和 Phaser。对于加载和显示精灵,您不需要 jQuery,只需 Phaser 即可。
load.spritesheet
需要一个 spritesheet,其中所有 sprite 都有 固定的宽度和高度 ,因此所有 sprite 都在网格布局中。
你的听起来像 spriteatlas,区别在于在 spriteatlas 中每个精灵可以有 不同的宽度和高度 ,所有这些宽度和高度每个精灵都在随附的 .JSON 文件中进行了描述。
所以我认为您正在寻找 load.atlasJSONHash
函数,如下所示:
function preload(){
//..
game.load.atlasJSONHash('robot', 'assets2/VillainSpriteSheet.png', 'assets2/VillainSpriteSheet_json.json');
// and then load a sprite like so
// Note: 'myframename1' should be some framename from the .json file
var villain = game.add.sprite(50, 50, 'robot', 'myframename1');
顺便说一下,Phaser 中的 load.json
可用于加载一个 .json 文件,例如用于您自己的自定义数据,如关卡布局,dialog/multilanguage 文本、高分数据、敌人模式等
我正在使用 Phaser 游戏引擎创建游戏。我创建了一个精灵 sheet 并下载了它。它带有带有我的帧的 256∆×∆384 .png 文件和一个 JSON 文件,我认为该文件包含有关如何拆分帧的信息。我不知道如何将带有 JSON 文件的精灵 sheet 导入到我的 preload() 函数中。我尝试使用以下代码,但它不起作用。任何帮助将不胜感激。
var game = new Phaser.Game(1200, 750, Phaser.AUTO, '', { preload: preload, create: create, update: update });
function preload(){
game.load.image('background', 'assets2/background.png');
game.load.json('robot', 'assets2/VillainSpriteSheet_json.json');
game.load.spritesheet('robot', 'assets2/VillainSpriteSheet.png');
}
var villain;
function create(){
var villainjson = game.cache.getJSON('robot');
//enable physics
game.physics.startSystem(Phaser.Physics.ARCADE);
//create background
var background = game.add.sprite(0, 0, 'background');
//villain
villain = game.add.sprite(50, 50, 'robot');
//enable phsyics
game.physics.arcade.enable(villain);
villain.body.bounce.y = .2;
villain.body.gravity.y = 300;
villain.body.collideWorldBounds = true;
}
您不需要 jQuery 的 getJSON()。你想要移相器。
它会像
p = new Phaser.Game(...);
p.cache.getJSON('foo');
p.load.image(...);
我认为您混淆了两个框架,jQuery 和 Phaser。对于加载和显示精灵,您不需要 jQuery,只需 Phaser 即可。
load.spritesheet
需要一个 spritesheet,其中所有 sprite 都有 固定的宽度和高度 ,因此所有 sprite 都在网格布局中。
你的听起来像 spriteatlas,区别在于在 spriteatlas 中每个精灵可以有 不同的宽度和高度 ,所有这些宽度和高度每个精灵都在随附的 .JSON 文件中进行了描述。
所以我认为您正在寻找 load.atlasJSONHash
函数,如下所示:
function preload(){
//..
game.load.atlasJSONHash('robot', 'assets2/VillainSpriteSheet.png', 'assets2/VillainSpriteSheet_json.json');
// and then load a sprite like so
// Note: 'myframename1' should be some framename from the .json file
var villain = game.add.sprite(50, 50, 'robot', 'myframename1');
顺便说一下,Phaser 中的 load.json
可用于加载一个 .json 文件,例如用于您自己的自定义数据,如关卡布局,dialog/multilanguage 文本、高分数据、敌人模式等