テラシュールブログスマートフォン用の表示で見るテラシュールブログ旧テラシュールウェアブログUnity記事。UnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。アニメーション今回は着地モーションをキャンセルする方法についてです。この方法は実際には色々と手があるので、その一つです。着地モーションと着地モーションキャンセル高いところから落ちたら際に棒立ちなのは変な事なので、高いところからキャラクターが落下したら、着地時に着地モーションを行いたくなります。膝を曲げて衝撃を吸収する訳です。Mecanimでやってみるので、とりあえずステートマシンで「空中になったら落下中モーション→地面に近づいたら着地モーション→モーション完了したら立つモーション」の順になるように設定してみます。着地に関しては上手くいきます。スーパーヒーロー着地のように、高高度からビシっと着地させるならコレでも問題無いのですが、同時に着地モーション時に動かせないのはストレスなので動かしたくなります。いう事で落下直後も普通に移動できるようにすると、しゃがみ中に動いてしまったりします。今回はコレを何とかします。着地モーションのキャンセルキャラクターの移動が始まったら、即座にステートを切り替えるが、基本は着地完了後にステートを切り替えるようにします。要するにLandingからExitに移動する為の条件を二つ用意する訳です。片方はHasExitTimeの条件式、もう片方は移動値が少しでもあればOKという感じです。着地モーション完了まで待ちたくないので、優先順位は移動したら完了を優先とします。これで着地モーション完了を待たなくとも移動すれば即座にExitステートに切替を開始します。即座にモーションを切り替えたいので「ブレンド時間は0」としておきます。着地モーション自体のスキップこれである程度キャンセルが出来てる訳ですが、場合によっては着地モーションが一瞬表示されてしまう事があります。それが嫌ならば、着地モーション自体をスキップしてしまう力技も無きにしもあらずです。Stateで次のステートが成立してるなら現在のステート切替を終了して次のステートに切り替えてしまいます。上手く設定すると、こんな感じになります。着地モーションのような「状態を持ったモーション」が無いなら、BlendTreeでモーション管理すればキャンセルし放題ですし、ツナギも綺麗です。モーションをブレンドしちゃえばって悪魔の声もします(というか、Mecanimのシステムの本質はコッチなんじゃないかって気がしてますUIの作り込みが微妙なだけで)また今回はMecanimのGUI制御で色々しましたが、そもスクリプトとPlayableAPIやAnimator.Blendでモーション制御してたら、もっと(プログラマは)楽に出来るんじゃないかなって気もしてますMecaniェ。(1)月別アーカイブはてなブログをはじめよう!tsubaki_t1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。