今日のlibGDX(20150522):複数のアクターを同時に動かすには?

今日のlibGDX目次

http://snoopopo.hatenablog.com/entry/2015/04/27/220545

未解決な不明点は発生次第、上の目次に追記しています!

複数のアクターを同時に動かすには?

動きの種類単位ではなく、Actor+動きの種類単位にActionは作るもの?、ってことかな。というのを明確にする。

ここまでの例では、1つのActorに対してしか処理を行っていないので、複数のActorを動かすことがわかりたい。

ゲームで同時にひとつの絵だけしか動かせないなんてことはないはずだし。

( http://snoopopo.hatenablog.com/entry/2015/05/13/154146 )

結論から言うと、アクターごとにアクションを設定してあげると、同時に複数のアクターは動きます。

       //image2用:順次処理
        Action action = Actions.moveBy(100, 0, 1, Interpolation.bounce);
        Action action2 = Actions.moveBy(-100, 0, 1, Interpolation.swingOut);
        SequenceAction seq = Actions.sequence();
        seq.addAction(action);
        seq.addAction(action2);

        //image2用:リピート処理
        RepeatAction rep = Actions.forever(seq);

        image2.addAction(rep);

        //group用:並列処理
        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);

そして、同じ動きをしたい、複数のアクターがあった場合にアクションの使いまわしが出来るかといえば、出来ませんでした。

       //image2用:順次処理
        Action action = Actions.moveBy(100, 0, 1, Interpolation.bounce);
        Action action2 = Actions.moveBy(-100, 0, 1, Interpolation.swingOut);
        SequenceAction seq = Actions.sequence();
        seq.addAction(action);
        seq.addAction(action2);

        //image2用:リピート処理
        RepeatAction rep = Actions.forever(seq);

        image2.addAction(rep);

        group.addAction(rep);

上記のようにした場合は、最初にアクターに設定したimage2のアクターしか動作しません。

動きの種類単位ではなく、Actor+動きの種類単位にActionは作るもの?、ってことかな。というのを明確にする。

今のところの結論としては、Actor+動きの種類単位 ということになる。

この記事の成果物

TODO あとであげる。