web-dev-qa-db-ja.com

libgdxでのアクターのアクション

私は Actor を作成しましたが、actionおよびactメソッドを利用する方法がわかりません。基本的なJavadoc以外では、これらのメソッドに関する適切なチュートリアルは見つかりませんでした。

誰もが俳優の行動についてのコメントの例を提供できますか?

22
Rudy_TM

LibGDXの変更により、この回答は廃止されました。最新のドキュメントについては scene2d wiki pageを参照してください

LibGDXには、さまざまなアクションが用意されています。彼らはcom.badlogic.gdx.scenes.scene2d.actions パッケージ。アクションには3種類あると思います。

  1. アニメーションアクション
  2. 複合アクション
  3. その他の行動

アニメーションアクションは、位置、回転、スケール、アルファなど、アクターのさまざまなプロパティを変更します。彼らです:

  • FadeIn-アクターのアルファをアクターの現在のアルファから1に変更します
  • FadeOut-アクターのアルファをアクターの現在のアルファから0に変更します
  • FadeTo-アクターのアルファをアクターの現在のアルファから特定の値に変更します
  • MoveBy-アクターを移動しますby特定の量
  • MoveTo-アクターを移動しますto特定の場所
  • RotateBy-アクターを回転させますby特定の角度
  • RotateTo-アクターを回転させますto特定の角度
  • ScaleTo-アクターを特定のスケール係数にスケーリングします

複合アクションは、複数のアクションを1つのアクションに結合します。

  • 並列-指定されたアクションを並列で実行します-すべてのアクションを一度に実行します
  • シーケンス-与えられたアクションを順番に実行-次々

その他のアクション:

  • 繰り返し-指定されたアクションをn回繰り返します
  • Forever-指定されたアクションを永久に繰り返します
  • 遅延-指定されたアクションの実行を特定の時間遅延します
  • 削除-ステージから指定されたアクターを削除します

すべてのアクションには静的メソッド$は、そのアクションのインスタンスを作成します。アニメーションアクションの作成例:

MoveTo move = MoveTo.$(200, 200, 0.5f); //move Actor to location (200,200) in 0.5 s
RotateTo rotate = RotateTo.$(60, 0.5f); //rotate Actor to angle 60 in 0.5 s

より複雑なアクションシーケンスを作成する例:

Sequence sequence = Sequence.$(
              MoveTo.$(200, 200, 0.5f), //move actor to 200,200
              RotateTo.$(90, 0.5f),     //rotate actor to 90°
              FadeOut.$(0.5f),          //fade out actor (change alpha to 0)
              Remove.$()                //remove actor from stage
            );

アニメーションアクションでは、Interpolatorも指定できます。さまざまな実装があります。

  • AccelerateDecelerateInterpolator
  • AccelerateInterpolator
  • AnticipateInterpolator
  • DecelerateInterpolator
  • LinearInterpolator
  • OvershootInterpolator

Interpolator Javadoc:Interpolatorはアニメーションの変化率を定義します。これにより、基本的なアニメーション効果(アルファ、スケール、移動、回転)を加速、減速することができます。アクションに補間を設定するには:

action.setInterpolator(AccelerateDecelerateInterpolator.$());

インターポレーターを使用したアクションの準備ができたら、そのアクションをアクタに設定します。

actor.action(yourAction);

ステージ上のアクターに定義されたすべてのアクションを実際に実行するには、レンダリングメソッドでstage.act(...)を呼び出す必要があります。

stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
73
Ludevik

Universal Tween Engineを試してみてください。使い方は簡単で本当に強力です...そして、すべてのコマンドをチェーンできるため、複雑なアニメーションを公園で散歩することができます。以下の例を参照してください。

手順:

1。ここからライブラリをダウンロード
2。アクセサクラスを作成します。時間を節約し、 こちら から私が使っていたものをつかむことができます。
3。GameクラスでTweenManagerを宣言します

    public static TweenManager tweenManager;


createメソッドで:

    tweenManager = new TweenManager();


renderメソッドで:

    tweenManager.update(Gdx.graphics.getDeltaTime());


4。好きなように使用してください。例.

弾性補間を使用して、俳優を1.5秒で位置(100、200)に移動します。

Tween.to(actor, ActorAccesor.POSITION_XY, 1.5f)
     .target(100, 200)
     .ease(Elastic.INOUT)
     .start(tweenManager);


アニメーションの複雑なシーケンスを作成します:

Timeline.createSequence()
    // First, set all objects to their initial positions
    .Push(Tween.set(...))
    .Push(Tween.set(...))
    .Push(Tween.set(...))

    // Wait 1s
    .pushPause(1.0f)

    // Move the objects around, one after the other
    .Push(Tween.to(...))
    .Push(Tween.to(...))
    .Push(Tween.to(...))

    // Then, move the objects around at the same time
    .beginParallel()
        .Push(Tween.to(...))
        .Push(Tween.to(...))
        .Push(Tween.to(...))
    .end()

    // And repeat the whole sequence 2 times
    .repeatYoyo(2, 0.5f)

    // Let's go!
    .start(tweenManager);


詳細 ここ

更新:デッドリンクを置き換え

12
sheitan

クラス com.badlogic.gdx.math.Interpolation を使用するための便利なリンクを次に示します。したがって、たとえば、効果を持つmoveTo ationを作成するには、次のように簡単に使用できます。

myActor.addAction(Actions.moveTo(100, 200, 0.7f, Interpolation.bounceOut));

Actionsクラスのインポートを静的に設定した場合(手動で設定する必要があります):

import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*;

その後、次のようなアクションを使用できます。

myActor.addAction(moveTo(100, 200, 0.7f, Interpolation.bounceOut)); 
11
Drorasta