読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

アニメーション

【Unity】AnimationController間でStateMachineBehaviourのインスタンスを共有するSharedBetweenAnimatorsの挙動

SharedBetweenAnimatorsというAttributeがあります。 簡単に言えば「StateMachineBehaviour」のインスタンスを共有するAPIです。少しだけ動作に疑問があったので確認してみました。 インスタンスを共有するSharedBetweenAnimators パラメータはシェアされる …

【Unity】ステージのギミックをアニメーションで作る際に便利な設定

今回は、現在位置からの相対距離で動くアニメーション設定という小ネタです。この使い方に気づかなかったので色々面倒な事をしていましたが、不要やったんやってお話です。 ステージギミックとアニメーション 初期設定ではAnimationの位置は親オブジェクトか…

【Unity】Timelineに動的に生成したオブジェクトをバインドする

今回はTimelineのデータ情報を流し込む方法についてです。 ※Unity 2017b5で実装が大幅に変わった為、動作しません。 新しい実装に修正中 Timelineは使い回せる イベントに使う事でAnimatorの構造を簡単にする 使い回しTimelineを作る時は編集用シーンを用意…

【Unity】アニメーションと物理演算を連動させる 5.6以降

以前、アニメーションと物理演算を連動させる方法について紹介しましたが、Unity 5.6でもっとシンプルになりました。 tsubakit1.hateblo.jp Animate Physicsなる機能 Unity 5.6のアップグレードガイドを眺めていると、少し気になる項目がありました。 docs.u…

【Unity】Video Playerでアルファチャンネル付きムービーを使う

アルファチャンネル付きムービー、アルファムービー、透過ムービー、with alpha、αムービー、Aビデオ、呼び方は色々ありますが、背景が透明なムービーについてです。 アルファチャンネル付きムービー 使用出来るコーデック Webmを再生出来ない端末では アル…

【Unity】Statemachinebehaviourの処理の実行順について

Statemachinebehaviourをステートに貼り付けた際、Statemachinebehaviourはどのような順番で呼ばれるのか。 確認してみました。 Statemachinebehaviourを呼ばれる順番 SubStateMachineのStatemachinebehaviour 関連 Statemachinebehaviourを呼ばれる順番 ル…

【Unity】アニメーション中、指定の位置に到達するように位置を補正する

ジャンプやダッシュジャンプを用いて障害物を登るというケースはよく有ります。この高さにアニメーションが一致すれば問題は無いのですが、任意の段差や距離をジャンプしたいといったケースは多々あります。 そういったケースの場合、幾つか解決の手法はあり…

【Unity】知らないと面倒くさい事になるかもしれないAnimatorの「Write Defaults」の動作について

今回はWrite Defaultsについて。 この挙動は少し分かりにくいので、少し補足します。 Write Defaultsという項目 キーが未定義なアニメーションは起動時のパラメータをデフォルト値として使う Write Defaultsという項目 注意点 デフォルト値が保持されるケー…

【Unity】AnimationControllerのAnyStateを使用してる際、現在のStateへ何度も移動しないようにする

今回は小さなTipsです。 例えば上のように「どれか一つのUI状態を持つ」UIをAnimationControllerで管理し、かつAnyStateから呼び出すように作成した際、Triggerを叩くと何度もUI表示アニメーションが再生されてしまうといった事があります。 AnyStateの先へ…

【Unity】着地モーションをキャンセルして即座に走り出す

今回は着地モーションをキャンセルする方法についてです。この方法は実際には色々と手があるので、その一つです。 着地モーションと着地モーションキャンセル 着地モーションのキャンセル 着地モーション自体のスキップ ちなみに、 関連 着地モーションと着…

【Unity】MecanimのAnimationClipを動的に差し替える

今回はMecanimのAnimationClipを動的に差し替える方法について。 Animationの差し替え AnimationClipを差し替える 関連 Animationの差し替え ゲームでアニメーションを使用して制御していると、時々アニメーションを差し替えたくなる事があります。例えばツ…

【Unity】知っておくと便利なAnimation Windowの操作(5.5以降対応)

Unity 5.5でAnimation Windowに手が加わりました。 今回はソレも踏まえて、Animation Windowのショートカットキーについて確認してみた事をメモします。 ま、アリじゃないか貴様(上から目線 知っておくと便利なAnimation Windowの操作 知っておくと便利なAn…

【Unity】Animatorで動かすオブジェクトをスクリプトでも動かす際の注意

少し面白い挙動について調査したので、メモ。 (前提)モデルにスクリプトで回転を加える (前提)さらに色を変えるのみのアニメーションを加える (問題)回転を設定したアニメーションを加えると動かなくなる 位置が変化するアニメーションが設定されてい…

【Unity】Navmeshで取得した経路をApplyRootMotionで移動させる手っ取り早い方法

今回はNavmeshとApplyRootMotionを組み合わせて動かす手っ取り早い方法についてです。 ApplyRootMotionとNavmesh NavmeshAgentが設定されたオブジェクトの移動を止める 終了距離が近づいてきたら、動かないアニメーションに切り替える 要するに 関連 なお、…

【Unity】AnimationClip単位でアニメーションを再生するPlayable API

Animator+AnimationController+AnimationClip(s)の組み合わせを使用せずともアニメーションを再生できるPlayable APIについてです。 このAPIは正確にはカスタマイズ可能なブレンドツリー的な何かになるのでしょうが、現状はAnimationClipやAnimationControl…

【Unity】AnimationControllerがプロジェクトを散らかさない設計についての模索とサンプル

Animatorの運用方法について、5つのアプローチを試しに試作してみました。 サンプルプロジェクト Style1:各ステートマシンにて制御 Style2:ステートマシンのアニメーションを上書き Style3:AnimatorOverrideControllerを「シーンにシリアライズ」 このサ…

【Unity】Animatorのアニメーション終了待ちをする方法

今回はAnimatorを使用している時にアニメーション再生が完了した事を検出する方法について考えてみます。 アニメーション終了検知 現在のステートのnormalizedTimeを見る ステートを比較してアニメーションの終了を知る ステートが移動する…について コルー…

【Unity】uGUIでスプライトアニメーションするには

uGUIでスプライトアニメーションを行う方法についてです。難しい事は全くないのですが、気づかないと分からないかもしれないので、一応ここに書いておきます。 下のGIFはキャラクターアニメーションをuGUIで行って居るので影付けたりアウトライン付けたり、…

【Unity】AnimationClipのMissingなパスを見つけて解決しやすくするエディタ拡張

昨日の応用で、アニメーションするオブジェクトでmissingになっているパスを発見し置換するエディタ拡張を作ってみました。 missingなAnimationClip missingなアニメーションを見つける missingなパスを置換する 導入とソースコード 使い方 感想 関連 missin…

【Unity】AnimationClipからTransformを操作するのアニメーションカーブを一括で消すエディタ拡張

アニメーションクリップからTransformのアニメーションを一括で消すエディタ拡張についてです。Animationを使用する目的のある程度はTransformの更新だと思うので必要かどうかは微妙な所ですが、一応。 TransformをAnimationClipから消すエディタ拡張 Transf…

【Unity】LOD(Level of Detail-距離に応じたハイポリ/ローポリの切替)をキャラクターで使用する方法

Level of Detailをキャラクター・・・と言うかアニメーションを持つキャラクターに対して使用する方法についてです。 LOD(Level of Detail) キャラクターとLOD 一つのAnimatorでLOD やり方 関連 LOD(Level of Detail) Level of Detailは距離に応じて描画…

【Unity】Animatorのスパゲティなステートマシンを整理する

UnityのAnimatorはノードベースのステートマシンでアニメーションを制御する機能を持ちます。しかしながら、どんどんノードを繋げていくと昨日の記事のように複雑なグラフ図が出来上がってしまいます。 その辺りを踏まえて、自分なりに「こうすれば良かろう…

【Unity】動的にキャラクターの衣装を差し替える

動的にキャラクターの衣装…というかメッシュをを差し替える方法について紹介します。 Unityで動的な衣装切り替え pic.twitter.com/b2BfLsxUCt — 椿 (@tsubaki_t1) 2015, 10月 23 目次 目次 キャラクターのMeshを差し替える マテリアルの登録順番による問題 B…

【Unity】影とキャラクターで異なるアニメーションさせる方法

影とモデルで異なるアニメーションを行わせる方法について紹介します。 この影とモデルが異なるアニメーションを行うギミックは単純です。「影を描画するだけのモデル」と「影を描画しないモデル」の二つを用意し、各々に異なるアニメーションさせれば良い訳…

デスクトップ操作をGifアニメに録画・編集する「ScreenToGif」

今までGifアニメを撮影する際には LICEcap を使用していましたが、今回Windowsへ移行するにあたりScreen To Gifへ切り替えました。どちらも良いのですが、Screen To GifがGifアニメのスケールを変更する機能を持っていたのが決定打となりました。 Screen To …

【Unity】Animatorのプロパティやステートへのアクセスを容易にするエディタ拡張

ふと思いついて、Animatorのステートやパラメータに定数でアクセスする為のコードを自動生成するエディター拡張を作成しました。 導入方法は ファイルをインポートするだけです。 https://github.com/tsubaki/Unity-AnimatorAccessHelper/blob/master/Animat…

Unity上でMMDモデルを独自アニメーションで走らせる

MMDモデルをRoot移動の無い、独自のモーションで走らせる方法についてです。この記事は以前に書いたUnity内でMMDモデルを自由に走らせる手軽な方法 の続き的な位置づけです。 目次 目次 MMDモデルおよびモーションの登録 RootMotionとアニメーション スクリ…

【Unity】Animatorのモーション切り替えが即座に行われないときの対処

Animatorのアニメーションをパラメータを使用して変更した時、アニメーションが即切り替わらない事があります。 たとえば上のGIF画像では、走り始めはキャラクターが滑っており、停止時にダッシュが継続してしまっています。 このケースは、アニメーション切…

【Unity】FBXに格納されたAnimationClipを取り出し編集可能にする

FBXに格納されているAnimationClipはReadonlyである関係上、アニメーションを調整する事が非常に面倒になっています。 そこで、FBXからAnimationClipを取り出してイベントを設定・アニメーションイベントを調整する方法を紹介します。 AnimationClipを取り出…

Unity5 MecanimのStateMachineBehaviourと戯れる

Unity5で唯でさえややこしいMecanim(アニメーション管理システム)に新しくStateMachineBehaviourが追加されました。 この機能はMecanimのステート管理機能の各ステートに振る舞いを設定できる機能です。各ステート毎に振るまいを設定することで、コンポー…

Unity5でRoot Motionを利用したアニメーションと、その注意点について

目次 目次 Root Motionを利用したアニメーション Root Motionのあるアニメーションを作成する Root Motionの機能 Unity5への移行とApply Root Motion Root Motionを利用したアニメーション Unity5でGenerate Root Motion Curvesが追加されたお陰で、このよう…

UnityのuGUIで複数のスクロールビューを切り替える演出の作り方

FacebookのUnity助け合い所で質問があったので、ちょっと書いておきます。(件の問題は解決済み) とりあえず、こんな感じのを作ります。今回はボタンで制御しますが、画面端からのスワイプやスクロールバー自体のスワイプといったギミックで差替えても良い…

UnityのuGUIで「UIのアニメーション制御」

目次 目次 UnityのuGUIで「UIのアニメーション制御」 uGUIでアニメーション アニメーションの作成手順 画面の準備 AnimatorとAnimationClip作成 キーフレームの登録 AnimationControllerの設定 AnimationControllerをスクリプトで制御する 感想 ライセンス …

UnityのGameObjectを非アクティブにするとAnimatorがリセットされる挙動、その対処法

マニュアルに書いてあったか記憶が微妙なのですが、UnityのAnimatorはGameObjectが非アクティブになるとリセットされます。 ここで言うリセットとはアニメーションが最初に戻るだけ等の生易しい物ではなく、パラメータの持つ値やトリガー状況、アニメーショ…