kenjizenki

お世話になっています。
spine-UnityにてAddanimationと同じタイミングでアニメーションを再生しようと思っているのですが
ランタイムドキュメンをを見ても良さそうな方法が見当たらなかったので相談させていただきます。

実装しようとしているものの例ですが、
インデックス1番で「走る構えのアニメーション」を再生後、
同じくインデックス1番で「走るアニメーション」を再生しようと思っています。

skeletonAnimation.AnimationState.SetAnimation(1, "Ready", false);
skeletonAnimation.AnimationState.AddAnimation(1, "run", false, 0);

このとき、runのアニメーションが始まったらrun用の土埃などのエフェクトを付けたいと思っています。
インデックス2番で「runeffect」アニメーションを再生したいのですが、どう記載すればよいかわかりません。

なにか良い方法などございますでしょうか。
Benutzeravatar
kenjizenki
  • Beiträge: 54

Misaki

こんにちは!
AnimationStateが発行するイベントを利用すれば、アニメーションの開始や終了に合わせて様々な処置を行うことが出来ます。
spine-unityランタイムドキュメント: AnimationStateイベントの処理

今回の場合、「特定のアニメーションが始まった時」に処理を行いたいとのことなので、TrackEntryを利用して以下のように記述していただければ良いかと思います。※仮にエフェクト再生のメソッド名をOnRunAnimationStartとしています
TrackEntry trackEntry = skeletonAnimation.AnimationState.AddAnimation(1, "run", false, 0);
trackEntry.Start += OnRunAnimationStart;
として、OnRunAnimationStartを
public void OnRunAnimationStart(TrackEntry trackEntry) {
skeletonAnimation.AnimationState.SetAnimation(2, "runeffect", false);
}
といった具合に記述していただければ同時に再生を始められます。

上の例ではStartイベントを利用しましたが、逆に先のアニメーションの再生が完了した時に合わせたい場合はtrackEntry.CompleteまたはtrackEntry.Endを利用してください。

この回答が参考になれば幸いです。
Benutzeravatar
Misaki

Misaki
  • Beiträge: 242

kenjizenki

ありがとうござます!
教えていただきましたTrackEntryについかする方法で無事実装できました!
助かりました!
Benutzeravatar
kenjizenki
  • Beiträge: 54

Misaki

ご報告ありがとうございます!無事実装できたとのことで良かったです!:D
Benutzeravatar
Misaki

Misaki
  • Beiträge: 242


Zurück zu 日本のSpine ユーザー