• 日本語
  • 【Uniry】キャラが持ち上げたオブジェクトの座標をアニメーションに合わせて動かしたい

FacebookのUnityのコミュニティで
同内容の相談を投稿して
返答が付かなかったため、
こちらでも質問させていただきます。

お世話になります。

2Dアクションゲームにて、
プレイヤーキャラとしてSpineで作成したアニメーションを使用しています。

当該ゲームですが、
フィールドにあるブロックなどのオブジェクトを持ち上げるアクションがあります。
オブジェクト持ち上げ状態の時に、
キャラの手の位置に合わせてオブジェクトの座標を動かしたいと思っています。

スマートな解決方法がありましたら
お知恵を頂戴いただけると幸いです。

公式のサンプルプロジェクトから参考にすべき箇所や
他言語のフォーラムにて同様のトピックがありましたら
そちらを提示いただく形でも構いませんので
どうぞよろしくお願いいたします。

ちなみに、現在実装している、
プレイヤーのゲームオブジェクトの
階層構造ですが、

PlayerControl(制御のスクリプトなどはこちらにアタッチ)
 ├(判定用コライダーなどなど)
 ├ SpineAnimation
 └ LiftManager

といった形になっており、
「SpineAnimation」がSpainのアニメーションデータ一式で
プレイヤーキャラとして見えるのはこちらです。

オブジェクトを持ち上げると
フィールドにあったオブジェクトが
「LiftManager」の下にぶら下がる
といったロジックになっております。
(なので現在、固定となっている「LiftManager」の座標が
アニメにシンクロして動くように出来ますと、
当方としてはベストな解決方法となります)

Related Discussions
...

例えばBoneFollowerコンポーネントを使って、例えばのアニメーションを正確に追跡することができます。 手です。

You can use a BoneFollower component to precisely follow the animation of e.g. a hand.

GameObjectを作成し、それに新しい BoneFollowerコンポーネントを追加するだけです(SkeletonAnimation GameObjectの子である必要はありません)。そしてSkeleton ReferenceパラメータをあなたのSpine SkeletonAnimation GameObjectに設定します。 「Bone Name」としてあなたのキャラクターの手の骨を選ぶことができます。 これで、GameObjectはアニメーションに従って手元に配置されます。

Just create a GameObject and attach a new BoneFollower component to it (it does not need to be a child of the SkeletonAnimation GameObject), then set the Skeleton Reference parameter to your Spine SkeletonAnimation GameObject. As Bone Name you can then select the hand bone of your character. Now the GameObject will be positioned at the hand, following the animation.

I'm sorry for the late reply.

Ooooh!

教えていただいたやり方で
非常にスマートに解決できました!
どうもありがとうございました!!

I solved it very smartly in the way I taught you!
Thank you very much! !

謝罪する必要はありません.
我々に戻ってくれてありがとう、それがうまくいってうれしい!

No need to apologize.
Thank you for getting back to us, glad it works!