テラシュールブログ

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

Animator の検索結果:

【Unity】Prefabの”モデルの差し替え”を、セットしたコンポーネントを一々付け直さずに行う方法

…る事です。 この時、Animator以下のオブジェクトにコンポーネントをセットしていなければAnimator以下のオブジェクトを差し替えるだけで済みます。メッシュの頂点やUV変更等であれば、ファイルの上書きで更新するならばオブジェクトの差し替えも要らないかもしれません。 逆に、Animator以下のオブジェクトにコンポーネントをセットしている場合…例えばRagDollをセットしているような状況だと、面倒なことになるかもしれません。 単純にMeshの差し替えでは上手く動作しなか…

【Unity】AnimationControllerを用意せずAnimatorによるアニメーションを使う

… 使い方です。 まずAnimatorの設定されてるモデルと同じGameObjectにSimple Animatorを登録します。その際、AnimatorのAnimation Controllerは必ずNoneにします。 AvaterやUpdate Mode、Culling ModeはAnimatorのパラメータが使われます。必要に応じて設定します。 Clip Listに最低一つのAnimationClipを登録します。AnimationClip名で再生するアニメーションを切り…

【Unity】Playable APIで幾つかの小技

…blo.jp 複数のAnimatorに単一のPlayableを流し込む アニメーションの出力先を切り替える Additiveの再生 複数のAnimatorに単一のPlayableを流し込む PlayableGraphにOutputは実は複数作ることが出来ます。コレを利用すると、複数のオブジェクトを完全に同期した状態でアニメーションさせる事が出来ます。 またOutputでアニメーションを流し込んだ場合でもアバターはAnimator毎に制御されているので、Humanoidならボー…

【Unity】アニメーション制御に色々と良さそうな"Playable API"について云々

…ayableAPIはAnimatorのLowLevel API(のようなもの) アニメーションのブレンド結果をOutputに出力する AnimatorをPlayable API的に見てみる Playable APIを実際に使ってみる AnimationClipを動的にロードしてアニメーションを再生する 複数のアニメーションの切替 複数のレイヤー制御 二つのAnimationClipPlayableを使いまわす 基本的にはAnimationControllerで、必要な時だけA…

【Unity】アプリ内課金やAssetBundle、ランキングの例を含むサンプルゲーム、Endless Runner Sample Game

…rで色々な画面効果 Animatorは割とシンプル その他諸々 感想 関連 Endless Runner Sample Gameといふゲーム Endless Runner Sample Gameは、モバイルで良く見たエンドレスラン系のサンプルみたいです。 ゲームを開始すると、割と良い感じのアニメーション(猫がねずみを追い回す)が始まり、キャラクターセレクトっぽい画面、そしてエンドレスランのゲーム画面に遷移します。 割と作り込んでいて、IAPやランキングの機能が含まれてるっぽい…

【Unity】RootMotionを持たないアニメーションをTimelineで動かす

…BGl — 椿 (@tsubaki_t1) 2017年6月15日 tsubakit1.hateblo.jp tsubakit1.hateblo.jp *1:Animatorに指定のAnimationClipが含まれていない場合でも、アニメーションを再生出来る *2:ちなみに、この動作は少し古いバージョン(Unity 2017 b6とか)だとまともに動きません。動作があまりにも酷いのでClip Root Motoinで動かすのが正しい動作かと勘違いしたレベルで動きませんでした。

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

…redBetweenAnimatorsというAttributeがあります。 簡単に言えば「StateMachineBehaviour」のインスタンスを共有するAPIです。少しだけ動作に疑問があったので確認してみました。 インスタンスを共有するSharedBetweenAnimators パラメータはシェアされる どんな時に使うべきか 値がリセットされない 関連 インスタンスを共有するSharedBetweenAnimators StateMachineBehaviourはAn…

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

今回は、現在位置からの相対距離で動くアニメーション設定という小ネタです。この使い方に気づかなかったので色々面倒な事をしていましたが、不要やったんやってお話です。 ステージギミックとアニメーション 初期設定ではAnimationの位置は親オブジェクトからの相対値 変化値だけでアニメーションを行う設定 他の方法と問題点 関連 ステージギミックとアニメーション ステージのギミックをアニメーションで作るのは、意外と便利です。特に最近はAnimationをPhysicsベースで動かす事…

【Unity】Calling Animator.MatchTarget while in transition does not have any effect. という警告

…。 Calling Animator.MatchTarget while in transition does not have any effect. 書いてある通りで、MatchTargetはノードの遷移中には効果がないとの事です。 別にワーニングですし欲しい挙動は動いては居るので問題が無いといえば無いですが、ワーニングのパフォーマンスと精神衛生上消した方が良さそうなので、消します。 遷移中の処理をスキップする 面倒なので、animator.IsInTransition(…

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

… イベントに使う事でAnimatorの構造を簡単にする 使い回しTimelineを作る時は編集用シーンを用意するが吉 Timelineはバインドしたオブジェクトを操作する PlaybleDirectorがオブジェクトへの参照を保持し、Timelineはその情報を使う 別シーンのオブジェクトや生成したオブジェクトは動的にバインドする PlayableTrackに動的なオブジェクトをバインドする PlayableAssetに動的なオブジェクトをバインドする 関連 Timeline…

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

…where the Animator has Animate Physics selected now have velocities applied to them when animated. This will give correct physical interactions with other physics objects, and bring the Animator in line with the behaviour of objects animate…

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

…はありますが、今回はAnimator.MatchTargetを使用した解決法をメモします。 Animator.MatchTarget 実際に使ってみる StateMachineBehaviourの用意 座標とウェイトの調整 アニメーションのタイミング調整 注意点 ApplyRootMotoinで動いている 移動速度は距離を時間で割った速度で、等速 MatchTarget補正中にステートの補完が走ると変な位置に到達する 機能するMatchTargetは一つのみ 関連 Anima…

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

…ultsという項目 AnimatorのWrite Defaultsの項目のマニュアルを見ると、下のような物のようです。 Write Defaults : AnimatorStates を書くかどうかにかかわらず、その Motion によってアニメーション化されてないプロパティーによってデフォルト値に戻します。 さて、「Motionによってアニメーション化されていないプロパティのデフォルト値」とは何でしょう。 キーが未定義なアニメーションは起動時のパラメータをデフォルト値として…

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

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

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

…了モーションをブレンドしちゃえばって悪魔の声もします(というか、Mecanimのシステムの本質はコッチなんじゃないかって気がしてますUIの作り込みが微妙なだけで) また今回はMecanimのGUI制御で色々しましたが、そもスクリプトとPlayableAPIやAnimator.Blendでモーション制御してたら、もっと(プログラマは)楽に出来るんじゃないかなって気もしてますMecaniェ。 関連 tsubakit1.hateblo.jp tsubakit1.hateblo.jp

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

…。 // gist.github.com これで下のように、Clipのステートで複数のアニメーションを制御出来るようになります。かつ、Mecanimのブレンドも使えます。 ミソは、animationclipを差し替えた際にリセットされるステートマシン情報を保持・巻き戻ししてる点と、animatorをupdate(0)で強制的に初期化してる点です。 関連 tsubakit1.hateblo.jp tsubakit1.hateblo.jp tsubakit1.hateblo.jp

【Unity】NavMeshとRigidbodyを連携して動かす

今回はNavmeshで動かすキャラクターを一時的に物理演算で動かしてみます。 UnityのNavmesh(経路探索AI)はNavmeshAgentというPhysicsとは異なった力によって動きます。その為、PhysicsとNavmeshを連携させる場合、少々面倒な事になります。 Navmeshの移動 NavmeshとRigidbodyの連携 関連 Navmeshの移動 まず理解する必要があるのが、NavmeshはTransform移動もしくはRigidbodyによる移動とは異…

【Unity】Navmeshで離れた空間にテレポートする

今回はNavmeshでキャラクターを移動させる際、本来であればNavmesh的につながってない場所を移動させる方法についてです。 入り口と出口が直接つながっていないケース 離れた空間を繋ぐoffmesh link Offmesh Linkの移動を即座に完了させる 関連 入り口と出口が直接つながっていないケース 今回は要するに入り口と出口が直接繋がっていないケースとなります。ドラゴンは上の小屋から入り、(多分、丘の中の洞窟を超え)下の小屋から出てきます。 この二つは見て分かる通…

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

…事があります。 まずAnimatorのUpdateModeをAnimatePhysicsに設定します。こうしないと、摩擦で動くときに少しカクカクします。 また、Animationで動くオブジェクトには物理演算による動きは不要なので、IsKinematicをRigidbodyに設定します。 あとはFixedJointを追加して、引っ張る対象にPlaneを設定します。 これで再生すると、Animationの動きに沿ってPlaneが動きます。動かない場合、Jointが動いていないか…

【Unity】Rigidbody2Dの新しい設定「Dynamic」「Kinematic」「Static」と「Simulated」の使い分け

…gidbody.simulatedの切替に変更すると、それなりのパフォーマンスが稼げます。試しにPCでSpriteとColliderとRigidbody2Dのセットを1000個程、アクティブ切替した物とsimulated&Renderer切替したもので比較してみます。 関連 docs.unity3d.com tsubakit1.hateblo.jp *1:特にAnimatorとCollider・Rigidbody、CanvasRendererは大きなコストになってたと思います

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

…ves」という表示がAnimatorに加わります。 ただ、RootMotoin以外でアニメーションしている場合はこの表示が加えられないので注意が必要です。 例えば2Dゲームで一部カットシーン的に動かしたりする場合に時々起こるんじゃないかなと思わなくもないので、その辺り注意する必要があるかもしれません。 回転しなくなる現象の対策 対策ですが、「初期値に戻すアニメーションが必ず効いている」事を前提にスクリプト自体を少し考え直せば良いです。但し「アニメーションで動かしていない」部分…

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

…ameshを主としてAnimatorを動かす)場合は、こちら。 tsubakit1.hateblo.jp ApplyRootMotionとNavmesh UnityのアニメーションシステムであるMecanimには、ApplyRootMotoinという機能があります。これは、アニメーションの移動値を元にキャラクターの座標を移動させるという物です。上手く使うことで、キャラクターを走らせる際「蹴り始めは加速」「着地時に減速」といった、緩急のある移動が可能になります。 一方Navme…

【Unity】目的地へ辿り着くための矢印を表示する

今回は、ゲームで道に迷った(哲学的な意味ではない)際の目安となる、目的地への道順を示す矢印の表示についてです。 ゲーム進行の矢印 方向を示す3つの方法 ゴールに至る方向だけを示すパターン 中間点で方向を示すパターン 経路を探索して方向を得るパターン 関連 ゲーム進行の矢印 2Dアクションゲームでも、3DRPGでも、目的地が何処にあるのか分からなくなると簡単にクソゲーなります。 ということで、出来る限りゲームをスムーズかつ簡単に体験して貰うために、道を示すというのは中々に悪くな…

【Unity】AssetBundleからアセットを取得する4つの方法

…fabのEthanにAnimatorが設定されていた場合でも、LoadAssets<Animator>("filename")のような記述は出来ません。GameObjectとして取得し、AnimatorをGetComponentする必要があります。 ちなみにサブフォルダに配置したアセットであっても、アセット名で取得出来ます。例えば下のように本来ならばchara/Player/Ethanのような場所にあった場合でも、LoadAssets<GameObject>("Ethan")…

【Unity】CPUプロファイラでパフォーマンスを改善する 後編

…のも問題です。例えばAnimatorはAnimationを比較するとAnimatorのほうが若干負荷が高いですが、SkinedMeshRendererの変形コストも加算するとAnimatorの方が負荷が低かったりします。 今回はそういった細々とした内容ではなく、大抵のゲームでの敵・GC、それとオーバーヘッドについてでです。 GCを減らす C#を使用していて何ですが、Unityで割と問題になりやすいのはGCについてです。特に巨大になってしまったゴミ溜めを収集する際には、非常に大…

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

…ateblo.jp Animator+AnimationController+AnimationClip(s)の組み合わせを使用せずともアニメーションを再生できるPlayable APIについてです。 このAPIは正確にはカスタマイズ可能なブレンドツリー的な何かになるのでしょうが、現状はAnimationClipやAnimationControllerの制御にしか使われていません。 なお、Playable APIは実験公開中の機能らしく、ちょくちょくAPIが変わります。5.4…

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

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

【Unity】UIで表現するテキストを1文字ずつ”動かす”

今回はUnityのUIのテキストを動かしてみます。 テキストを動かす テキストを動かす テキストを揺らす テキストの大きさを変える テキストを動かすの基本 テキストを動かす UnityのUIシステムであるuGUIですが、実はテキストを表現するためのポリゴン…頂点を動かしたりする事が出来ます。この部分を上手く活用すると、文字1文字ずつを動かしたり透明にしたり、変形させたりする事が出来ます。 tsubakit1.hateblo.jp ということで、色々とやってみました。 テキスト…

【Unity】Unityエディタがクラッシュした際に失われた情報を復旧させる裏技(5.3以降)

…がら、PrefabやAnimatorといったメタデータは、復旧されません。ProjectのSaveをこまめにする事をお勧めします。 実際に復旧させる ゲームがクラッシュして死ぬ(仮) まず、ゲームを再生します。Unity 5.3からMulti Scene Editingが可能になったので、当然複数のシーン編集中に起動させます。 で、クラッシュしたと仮定します。 上にも書きましたが、ここでUnityエディタを立ち上げてはいけません。 失われたシーンを復旧する手順 次にUnity…

【Unity】テキストをぴょんぴょんさせたりフェードしながら表示する、Typeface Animator

… Typeface Animator とは 割と簡単に使える 関連 Typeface Animator とは Typeface Animator Typeface Animatorは、文字をアニメーションさせながら表示させるアセットです。下のようにuGUIのテキストを動かしながら表示する事が出来るみたいです。 uGUIを使用しているので、レイアウト調整やマスクといったuGUIの機能をそのままに、文字の表示時にエフェクトを加えられるのが特徴です。 また、文字に対して一括でエフェ…