募集要項

  • ■ボイスの募集は終了しました。

    非常に沢山のご応募ありがとうございました!

     結果はこちら
2017年5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

« 【Unity Action】 物理演算と手付けモーション | トップページ | 【雑記】落ち着いたので・・・買った! »

2013年10月20日 (日)

【Unity Action】 Jointと手付けモーションの切り替え処理実装

さて、昨日の記事
ノードの階層を動的に変えればいけるかなーとか言っていましたが、
試してみたらダメでしたヽ(´Д`;)ノうぉぉ・・・浅はかだった・・・

どうやら、実行時の構造を基準にアニメーションを再生しているらしく、
途中で親子階層を変更したり、名前を変更しても、
変更した位置でアニメーションが再生されてしまい、
Jointとモーションの切り替えできず・・・。

要は、
「揺らしたいノードに対してアニメーションを適応した状態では、
 (アニメーションを終了しない限り)Jointを適応できない」

という何とも切ない感じのようです。

しかし、それでは困るので、
なんとか解決策は無いかと脳内会議してみました。

思い浮かんだのは、2つ
①「揺らす箇所のアニメーションデータを分けて別々に制御する」
②「揺らす箇所のアニメーションをanimation.Play("xxx")では無く、スクリプトで参照する」

普通に考えたら安定は①な気がしますが、
動かす箇所毎にアニメーションデータを別途作成しないといけないので、
単純にデータ管理&モーションエクスポーターの拡張が面倒なので②を検討する事に。

アニメーションの参照方法はあまり良い案が浮かばなかったので、
キャラクターの階層にダミーのノードを設置してその値を参照し、
Updateで処理しました。

ダミーのノードが必要な分、
ちと無駄がありますが、大量にJointを使う予定は無いので、許容範囲と判断。
・・・と思い込む事に。

ただ、やはり無駄はあるのであまりお勧めはできません(笑
不安がある場合は大人しくアニメーションを分けて制御しましょう(;´∀`)

で、アクション毎にON/OFF設定が出来るようにしました。

Photo_2

アクションのパラメータに開始から何秒後にON(もしくはOFF)
にするかが指定できます。
List形式なので、1行動のうちに何回OnOffしても良いような感じに。
※着地○秒後とかも設定可。
尚、アクションが終了(中断時)にJointがOffの場合、
自動的にJointは有効になるようにもしたりしました。

現在の挙動的に残念なのは、やはりJointからモーションに切り替えるタイミング。
このタイミングだけは、現状のやり方だと補間が効かないので、
1fで位置を変えざるを得ない感じです。
尚、モーション⇒Jointの場合はモーションの最後の位置から
シミュレーションを開始するので大きな問題はなさそう。

・・・まぁ許容範囲といえば許容範囲なんですが・・・。
Jointの挙動にもダミーかまして、統合結果をブレンドするような作りにすれば
可能そうといえば可能そうですが、その分重くはなりそうですし、
今回はやめておく事にします( ´ω`)ノ

« 【Unity Action】 物理演算と手付けモーション | トップページ | 【雑記】落ち着いたので・・・買った! »

Unityアクションゲーム製作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1500357/53655095

この記事へのトラックバック一覧です: 【Unity Action】 Jointと手付けモーションの切り替え処理実装:

« 【Unity Action】 物理演算と手付けモーション | トップページ | 【雑記】落ち着いたので・・・買った! »

Twitter等

  • にほんブログ村 ゲームブログ ゲーム制作へ

メールフォーム

  • 直接コンタクト取りたい方はこちらからどうぞ

サイト内検索
ココログ最強検索 by 暴想