mieki256's diary



2013/11/09() [n年前の日記]

#5 [unity] ApplyGravityの謎

人体モデルを Mecanim でアニメーションさせて、スクリプトで動かしてやりたい。ということで、 Mecanimのサンプルを眺めていたり。

_Mecanim Example Scenes by Unity Technologies -- Unity Asset Store の中の、Animator Controller.unity というサンプルを眺めて勉強を。しかしコレがよく分からない。

サンプルを動かしたら、重力計算をしているように見えた ―― 高いところから落ちると下にちゃんと落ちていくのだけど。どこでその処理をやってるんだ…?

サンプル内の人体モデルには、 _Character Controller と、スクリプトが割り当てられていて。Character Controller は重力計算をしてくれないので、 _スクリプト内で重力加速度を加えたり 等をしないといけない、と思ってたのだけど。

スクリプト、IdleRunJump.cs を眺めても、それらしい記述が無い。なんだかちょっと関係ありそうなのは、以下の1行だけ。
	public bool ApplyGravity = true; 
この、ApplyGravity は、宣言・代入はされてるけれど、スクリプト内で参照されてない。なのに、サンプルは重力が働いてる…。

自分の自作の Scene 内で、IdleRunJump.cs を使ってみた。…重力は働かない。だよなあ。

と思ったが、Inspector 内で、スクリプトが上、Character Controller が下になるように配置したら、重力が働いた。なんでや…。この ApplyGravity って、一体何者なんだ…? ググってみても、解説どころか使用例すら出てこない。ワケワカラン。

ApplyGravityは関係ないのかな。 :

ApplyGravity を false にしても重力が働いた…。なんでや…。

CharacterController を削除してみた。重力が働かない。追加してみた。重力が働く。変だなあ…。CharacterController は重力計算と関係ないはずだったのでは…。

なんだか分かってきた。Animator の Apply Root Motion が関係してる…? この、Apply Root Motion は、以下の意味を持ってるらしいけど。
  • チェックを入れると、モーションで座標移動する。
  • チェックを入れないと、スクリプトで座標移動する。
チェックを入れると重力が働いて、外したら空中に浮いたままになった。

すると、Animator が重力計算をしているのか…。いや。違うか。だって、CharacterController を外すと重力計算しないのだし。Animator が重力計算をしているなら、CharacterController を外しても落ちていくはず。

もしかすると、CharacterController が、Animator の存在、かつ、Apply Root Motion をチェックして、有効だったら重力計算をするようになっている…?

でも、そうなると、スクリプト内の ApplyGravity って、何に使ってるんだ…? ワケワカラン。

この記事へのツッコミ

Re: ApplyGravityの謎 by 名無しさん    2017/03/09 19:19
同じところで詰まっています。
記事者さんは解決されたのでしょうか?
Re: ApplyGravityの謎 by mieki256    2017/04/28 19:17
返信が遅くなってスミマセン。
その後Unityは触らなくなったので、たぶんコレって謎のままだった気がします…。

以上です。

過去ログ表示

Prev - 2013/11 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project