今日のlibGDX(20150513):
今日のlibGDX目次
http://snoopopo.hatenablog.com/entry/2015/04/27/220545
今日のテーマ:アクション 1
おおー!ようやく動かします!!
今回は長いので、明日も継続する。
アクション
○○の動きをするアクションを生成。
Action action = Actions.moveBy(100, 0, 1); //x座標100pxを1秒間に移動
Actorにアクションを登録。
image1.addAction(action);
以下から紹介されていたものを一通り試していく。
順次処理
//アクションつくる Action action = Actions.moveBy(100, 0, 1); Action action2 = Actions.moveBy(-100, 0, 1); //順次処理 SequenceAction seq = Actions.sequence(); seq.addAction(action); seq.addAction(action2); image1.addAction(seq);
ループ
RepeatAction rep = Actions.repeat(3, seq); //3回ループ RepeatAction rep2 = Actions.forever(seq); //無限 group.addAction(rep2);
もちろんグループにも適応されます。グループ単位で動いてくれました。
並列
//並列処理 Action right = Actions.parallel( Actions.moveBy(100, 0, 1) ,Actions.scaleTo(2, 2, 1) ); Action left = Actions.parallel( Actions.moveBy(-100, 0, 1) ,Actions.scaleTo(1, 1, 1) ); SequenceAction seq3 = Actions.sequence(); seq3.addAction(right); seq3.addAction(left); group.addAction(seq3);
Actionsのparallelメソッドは、
public static ParallelAction parallel(Action... actions)
引数が可変長引数だ。可変長引数については以下でやった。
http://snoopopo.hatenablog.com/entry/2015/04/15/164811
http://snoopopo.hatenablog.com/entry/2015/04/16/134334
ここまでの疑問(次回消化のためのめも)
同じ動きをさせたい別のアクターに対して、同じactionをaddActionできるのでは? と思ってやってみたけど,
Action action = Actions.moveBy(100, 0, 1); //x座標100pxを1秒間に移動 image1.addAction(action); image2.addAction(action);
ここ↓でNUllPointerException吐かれた。
ここは前の記事*1でもわかってなかったので、次回やはり調べるか。
stage.act(Gdx.graphics.getDeltaTime());
→ 20150522 add. というわけで少し調べてみた.
とりあえずこの結果からわかるのは、 動きの種類単位ではなく、Actor+動きの種類単位にActionは作るもの?、ってことかな。というのを明確にする。
ここまでの例では、1つのActorに対してしか処理を行っていないので、複数のActorを動かすことがわかりたい。
ゲームで同時にひとつの絵だけしか動かせないなんてことはないはずだし。
→ 20150522 add. というわけでやってみた.