Timelineでちょっと苦戦したことについて2

Unity

今回新たな問題が発覚したのを解決したので記そうと思います



今回は何につまづいたのか

まずはこちらをご覧ください

もふもふ
もふもふ

なんかヤバいもふ(; ・`д・´)

そうですヤバいんです

トリガーとなるオブジェクトをクリックすると強制的に別の場所にワープしてしまう現象が突如現れたのです

このままでは使い物にならないので解決していこうと思います!

考察

これまでタイムラインによるイベントをいくつか作成してきましたが、今回の症状は初めてだったので、他のタイムラインと比較して相違点があるか考えます

ありました

トリガーとなるオブジェクトがその場から動かずにアニメーションをするタイムラインはこれまでにもありましたが、Transform Positionが変動するものは今回が初めてでした

なのでおそらくトリガーとなるオブジェクト自体がアニメーションにより位置が変動する場合はワープのように不具合が発生すると仮定して対策を考えます

解決方法

単純に解決方法を述べるならば、動かないオブジェクトをトリガーにすればよいということになります

今回は4つ重なっている衣装ケースのうち上二つが動くので、その下の衣装ケースをトリガーにすれば解決はすると思うのですが、非常に違和感を覚えます

そこで、トリガーオブジェクトを一番下の衣装ケースにして、それにアタッチしているボックスコライダーを縦に引き伸ばして全体をカバーする方法を取ります

後に必要になるのでボックスコライダーは空オブジェクトにアタッチしておきます

ただ、これだとレーザーでコライダーを選択した時に、一番下の衣装ケースしか色が変わらなくなってしまうので、ここもひと工夫します

トリガーとなるオブジェクトに付随しているInteractionAffordanceの中にあるColorAffordanceにアタッチしてあるMaterial Property Block Helper(スクリプト)のRenderer部分にオブジェクトをアタッチすることで、そのオブジェクトの色が変わるようになるので、複製してそれぞれにオブジェクトをアタッチしていきます

これできっと4つとも色が変わってくれると思います

ここまでで準備万端かと思いましたが、よく考えるとボックスコライダーに少々問題が残ることに気付きました

アニメーションがスタートすると、上二つの衣装ケースは位置が変動します

しかしボックスコライダーは元の位置のままなので、空の空間に当たり判定だけ残ってしまうのです

そこで、タイムライン上でボックスコライダーも制御できればどうにかなるかもしれないと考えました

タイムライン上にボックスコライダーをドラッグし、Activation Trackを作成

最初と最後の数フレームだけアクティブに設定します(赤丸部分)

さきほどボックスコライダーを空オブジェクトにアタッチしたのはこのためです

さて、これで症状が改善されているか試してみましょう

結果

もふもふ
もふもふ

ばっちりもふ(;゚Д゚)

ちゃんと全ての衣装ケースが変色し、ワープもせず、開始直後にコライダーが消えて選択不可になり、終了後はコライダーが復旧しているので成功です!



まとめ

動かす予定のものをトリガーにするとバグることが分かった

今回は土俵がVRでしたが、それ以外の場合でも起こりうる可能性はあると思います

タイムラインでコライダーも制御できることが分かった

タイトルとURLをコピーしました