前回はキャラクターをクリックによって動かしましたね。
今回はキャラクターを自動的に動かしてみましょう。
シューティングゲームやアクションゲームの敵キャラの動き等に使えますね。
タイムラインの使い方
- 移動させる
12345678910111213141516171819202122232425enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.moveTo(288,288,50); //クマを右斜め下に動かす!}game.start();}
重要な部分はkuma.tl.moveTo(288.288.50)の部分です。
この部分で50回の画面描写の間にクマをx軸288, y軸288の位置に移動させます。 - 別の動きを追加する
moveToを連結することで、動きを追加することができます。1234567891011121314151617181920212223242526enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.moveTo(288,288,50).moveTo(288,0,50).moveTo(0,0,50);}game.start();} - 動きを繰り返す
loopメソッドを利用することで動きを繰り返すことができます。
1234567891011121314151617181920212223242526enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.moveTo(288,288,50).moveTo(288,0,50).moveTo(0,0,50).loop();}game.start();}右下に移動して上に上がる処理を繰り返します
- 待機する。動きの途中で待ち時間を入れることができます。
1234567891011121314151617181920212223242526enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.moveTo(288,288,50).moveTo(288,0,50).moveTo(0,0,50).delay(30).loop();}game.start();}
右下に移動、上に移動したのち30描写(1秒)待って同じ処理を繰り返します。
- 関数を実行する。
123456789101112131415161718192021222324252627enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.moveTo(288,288,50).moveTo(288,0,50).then(function(){this.x=0;this.y=288}).moveTo(0,0,50).loop();}game.start();}
右下に移動、上に移動した後、連結されたthenの中の関数が実行されます。
関数の中で、this.xとthis.yの値を変更して左下にワープさせています。1then(関数) - 回転させる
12345678910111213141516171819202122232425enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.rotateBy(360,50).loop();}game.start();}
回転させる場合はrotateByを利用します。
1rotateBy(角度,画面表示数); - 拡大縮小させる
12345678910111213141516171819202122232425enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.scaleTo(2,2,30);}game.start();}
- フェードイン、フェードアウト
12345678910111213141516171819202122232425enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.fadeOut(30).fadeIn(30).loop();}game.start();}
fadeInフェードインするまでの画面表示数
fadeOutフェードアウトするまでの画面表示数 - 動きを組み合わせる
1234567891011121314151617181920212223242526enchant();// KnightコンストラクタをつくるKuma = Class.create(Sprite, // Spriteの機能を継承{initialize: function(x, y) { //初期化するSprite.call(this, 32, 32); //Spriteオブジェクトを初期化this.image = game.assets['chara1.png'];this.x = x;this.y = y;this.frame = 4;game.rootScene.addChild(this);},});window.onload = function() {game = new Game(320, 320);game.preload('chara1.png');game.onload = function() {kuma = new Kuma(0, 0); // 一人目のクマ作成kuma.tl.rotateBy(360,50).and().moveTo(288,288,50).scaleTo(0.5,0.5,50).and().moveTo(288,0,50).moveTo(0,0,50).and().scaleTo(1,1,50).and().rotateBy(4120,50).loop();}game.start();}
and()は前後の動作を同時に実行します。
例えば、回転と移動を同時に実施して、回転しながら右下に移動するといった
動きを実現します。