• 日本語
  • 特定の条件下で挙動の変わるアニメの作り方

お世話になっております。

対象物を避けるようなSpineを作っているのですが、避け方の挙動実装方法について質問させていただきます。

例として写真を添付&製作中のSpine素材を問い合わせフォームからお送りさせていただきます。

人の居る列がトラックをさけるようなSpineを作りたいと思っております。
車の幅が列より広い場合は、人が避けるようなアニメーション、
車の幅が列より狭い場合は、動かない、というのをしたいのですが、うまくいきません。
良い実装方法ございませんでしょうか。

また、車にはスキンがあり、それぞれ異なる車幅を持っております。

Related Discussions
...

こんにちは!

ご質問の内容について確認させていただきたいのですが、
希望されているのは「Spineエディター上で条件分岐を使ったアニメーションを作成したい」ということでしょうか?
メールにてSpineプロジェクトをご送付いただいておりますが、
いただいたプロジェクトだと車と人物が1つのスケルトンの中に入っておりますので、
「1つのスケルトン内に2つの要素(=車と人物)があり、片方の要素の動きに対応して避ける動作を行いたい」ということなのか、
実際のゲーム内では車と人物は分かれているのかがこちらでは判断できず、
お手数ですがゲーム内でどのような構成になるのかもう少し詳細を伺えますと幸いです。

仮に車と人物は実際のゲーム内では別々のスケルトンになるのでしたら、
スキンごとに車のサイズに合わせた境界ボックスアタッチメントを作成しておき、
spine-unityランタイムのBoundingBoxFollowerコンポーネントによって当たり判定を取得し、
人物の当たり判定が車の当たり判定に触れたら避ける動きをするように実装いただければ良いのではないかと思います。

境界ボックスアタッチメントとBoundingBoxFollowerコンポーネントの詳細については以下のドキュメントをご確認ください。
境界ボックスアタッチメント - Spineユーザーガイド
spine-unityランタイムドキュメント: BoundingBoxFollower

失礼致しました。
「1つのスケルトン内に2つの要素(=車と人物)があり、片方の要素の動きに対応して避ける動作を行いたい」
こちらになります。

同一スケルトンで対応したいと思っており、良い実装方法があればご教授いただきたく思います。

全く同じ長さのアニメーションを再生するという前提で良かったでしょうか?つまり人物が車を避けるタイミングはどの車スキンだとしても同一なのでしょうか?

仮にそうだとすれば人物の移動量だけに差が出来れば問題ないということかと思いますので、
各人物の座標を管理するボーン名をCharaPosition_nn(nnは番号)と仮定させていただいた場合、
まずCharaPosition_nnを一番遠い地点まで動かす(一番大きい車を避ける)アニメーションを作成し、
CharaPosition_nnrootボーンをターゲットとしたトランスフォームコンストレイントTC_CharaPosition_nnを作成し、
スキンごとにトランスレートのミックスの値を変更して、車のサイズが小さい時ほど移動量を減らすようにすれば実現できるように思います。

つまり、車のサイズが小さい時ほどトランスレートのミックス値を100に、
車のサイズが大きい時ほどトランスレートのミックス値を0に近づけるイメージです。
rootボーンには何の動きもついていないことが前提になりますが、トランスレートのミックス値が100になっているなら全く動かず、
0の時は最初に作成したアニメーション通りに動くので一番端まで避けるようになるかと思います。

もしまだ何か想定と違っている点があればお手数ですが補足いただけますと幸いです!

ご回答ありがとうございます。
ちょっと頂いた情報を元に状況を一旦整理して色々試してみようとおもいます。
また不明点が明確になりましたら相談させていただきたいと思います、ありがとうございます。

ご返信が遅くなりましたが、ぜひまたご不明な点がございましたらお気軽にご質問ください!
よろしくお願いいたします。