Phaser3 メモ¶
基本¶
・左上原点
・オブジェクトの座標は、その中心点を指定する
■プロジェクトの雛型は以下のものがある。
・一番素朴な例
createや、preload, updateのthisはSceneオブジェクトを指す。
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: {
preload: preload,
create: create,
update: update
}
};
var game = new Phaser.Game(config);
function preload ()
{
this.load.image( ...
}
function create ()
{
this.add.image( ...
}
function update ()
{
...
}
・ES6での書き方。たぶんこれが一番スタンダードになりそう。
class MyScene extends Phaser.Scene {
constructor (config)
{
super(config);
}
preload ()
{
this.load.image( ...
}
create ()
{
this.add.image( ...
}
update ()
{
...
}
}
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: MyScene
};
var game = new Phaser.Game(config);
・ES6使わない場合の書き方。
一昔前はこれがスタンダードだったっぽい。
var MyScene = new Phaser.Class({
Extends: Phaser.Scene,
initialize:
function MyScene (config)
{
Phaser.Scene.call(this, config)
},
preload: function ()
{
this.load.image( ...
},
create: function ()
{
this.add.image( ...
},
update: function ()
{
...
}
});
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
scene: MyScene
};
var game = new Phaser.Game(config);
他にも書き方はあるけど、上記3例が基本となる。 他の例については以下のURLのScene From ~ を参照
参考 : https://labs.phaser.io/index.html?dir=scenes/&q=
リファレンスは以下のURL。Sceneドロップダウンリストから辿っていくのが分かりやすい。
音声を複数回同時に再生したい¶
音声を読み込むときのconfigにinstancesを指定してやると、その数だけ同時に再生できるようになる。
this.load.audio('example', [
'assets/audio/SoundEffects/fx_mixdown.ogg',
'assets/audio/SoundEffects/fx_mixdown.mp3'
], {
instances: 4
});
参考 : https://labs.phaser.io/edit.html?src=srcaudioHTML5%20AudioMarkers%20-%20Play.js
シーン遷移のサンプル¶
参考 : https://labs.phaser.io/view.html?src=srcsceneschanging%20scene%20es6.js
シーン遷移のタイミングで、Phaserが作成したオブジェクトは破棄されると思う。 自分で設定したプロパティはそのままなので、createでの初期化を忘れないこと。
キーを押下した瞬間のみ処理を行いたい¶
キーが押下されている際にずっとtrueを返すのではなく、
キーが押下された瞬間一度のみtrueを返す例
//キーの監視を追加して
spacebar = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE);
//こんな感じで行う
if (Phaser.Input.Keyboard.JustDown(spacebar))
{
// 何らかの処理
}
cursor取得してる場合は以下みたいな感じ
cursors = this.input.keyboard.createCursorKeys();
...
if (Phaser.Input.Keyboard.JustDown(cursors.space)) {
// 何らかの処理
}
参考 : https://labs.phaser.io/view.html?src=srcinputkeyboardjust%20down.js