【Unity】アニメーションとコライダがズレている時の解決方法

unity

Unityでコライダを設定したらアニメーションの動きとズレていたことがありました。

無料のアセットに適当なアニメーションをくっつけて死んだ時の演出をしたのですが、見事にコライダがずれてます。

原因としては、コライダをアタッチしたオブジェクトがボーンでないからです。

1番親のオブジェクトにコライダをつけていたのですが、アニメーションを動かしてみると座標が変化していないことが判明。

倒れた時の座標が変化しているのは子オブジェクトだった、という落ちです。

同様の問題がある人は、animationを動かしてTransformの値を見てみましょう。

(Bip001Pelvisがボーンでした。)

子オブジェクトにコライダをアタッチしてあげると、、、

動きに合わせてコライダの位置も良い感じに変化しています。

コライダを子オブジェクトに移動させるにあたって、親オブジェクトについているスクリプトを参照する必要が出てきました。

そのような場合には、GetComponentInParentを使って、コンポーネントを探すようにしましょう。

//var enemy = hit.collider.GetComponent<EnemyStatus>();
var enemy = hit.collider.GetComponentInParent<EnemyStatus>();

コライダが子オブジェクトにアタッチされていても、親にアタッチされているスクリプトを参照できます。

それでは。

参考URL

https://qiita.com/ryo10410/items/6a65bf3af7d6317eb5fa

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog