記事一覧

Animator.StringToHash  文字列からパラメーター ID を生成。

Animator.StringToHash



public static int StringToHash(string name);

(このAnimatrorは class UnityEngine.Animator の模様)

パラメーター

name 文字列(=string型)から ID(=int型) へと変換します。




private int motionIdol = Animator.StringToHash("Base Layer.Idol");

Base LayerでIdolと名付けたステートのIDを取得してmotionIdol に代入している。
結果
motionIdol の中身は 127445790

このIDを比較して現在idolモーションが再生中かを調べる事が出来る。



if (animator.GetCurrentAnimatorStateInfo(0).nameHash == motionIdol)

animatorは、スタート関数で手に入れたこのオブジェクトに付いているAnimatorコンポーネント
( animator = GetComponent();で手に入れた)

これで現在のオブジェクトがidolモーションかどうかが判断できる。

しかし
AnimatorStateInfo(0).nameHashは、非推奨というかobsoleteらしい。

かわりに
Animator.StateInfo.fullPathHash を推奨のようなので下記の命令が望ましい。

if (animator.GetCurrentAnimatorStateInfo(0).fullPathHash == motionIdol)


nameHashをfullPathHash に書き換えるだけで良かった。

GetCurrentAnimatorStateInfo(0)の何故(0)が必要なのか今のボクには理解できない。
また今度。














スポンサーサイト



コメント

コメントの投稿

非公開コメント