iTweenを使っていて「アニメーションを途中で止めたい」、「ループしているアニメーションを止めたい」という状況は結構あると思います。
そこで出てくるメソッドStop()
ですが、これで特定のアニメーションのみ停止させる方法で躓きました。
Stopメソッドで特定のアニメーションを停止させる方法
先に、正解のタイプ指定方法から。
例えば、PunchScale()
アニメーションを停止させる場合は以下のようにします。
iTween.Stop(gameObject, "punch");
第二引数のstring型「type」には「”PunchScale”」とメソッド名をそのまま指定するのではなく、予め用意されているアニメーション形式の文字列を渡します。
他の例で言えばMoveTo()
やMoveAdd()
なら「“move”」と指定します。iTweenのプログラムコードを見る限り指定できるタイプは以下のようです。
- “value”
- “color”
- “audio”
- “move”
- “scale”
- “rotate”
- “shake”
- “punch”
- “look”
- “stab”
(iTweenのソースコードをさっと見て、switch構文で使用されているタイプを羅列しているだけなので間違っている文字列もあるかもしれません)
失敗例
自分は最初、iTween公式ドキュメントを見て「type」引数にはメソッド名を指定するものだと思っていました。
iTween.Stop(gameObject, "PunchScale");
が、実際にコードを書いてみると「ArgumentOutOfRangeException」というエラーが出ます。
呼び出されたメソッドで定義されている許容範囲外の値が引数として渡された場合にスローされる例外。
ArgumentOutOfRangeException クラス (System)
明らかに引数の文字列が間違っているのは分かりましたが、ちゃんとした指定方法が分からず。
そこで調べた所、Gistに公開されていたこちらのコードが参考になりました。リンク先の25行目です。
iTween.Stop(this.gameobject, "move");
なるほどですね。type、つまりアニメーションの種類を指定するので「MoveAdd」や「MoveTo」なら”move”、「RotateAdd」や「RotateTo」なら”rotate”とメソッド名ではなく種類を文字列で渡すという事だったようです。
サンプルコードを公開してくれた方に感謝です!