結論
コライダーとgravityをチェックしよう
背景
VR配信・SNSサービスのバーチャルキャストでは、他のVRSNSに見られない仕組みとしてVCIというものがあります。VCIはバーチャル空間で取り扱えるアイテムであり、好きな場所で好きなタイミングで取り出すことができ、その挙動はスクリプトを用いて制御することでインタラクティブな効果を奏することができます。
そのVCIを制作するにあたって、制作の最初の段階で(特に初心者に多い)結構な割合で作ったはずのVCIを呼び出しても出てこない(見つけられない)事が起きます。
本記事ではこの現象に対する事例分けをし、それぞれの対処方法を紹介し、、、たいのですが、結構多岐にわたるので、そのうちの一つをご説明します。
作者のモチベーションが続けばもっと書きます
対象
all user(主に初心者)
症状
出したのに出てこない、もしくは
一瞬だけ出現するけど、すぐ消えてしまう
原因
出現した瞬間無限落下している
どういうことか
重力設定がオンになっているうえで、接触判定を入れていないと起きる。
unityでは、どういうわけか、これがデフォルトで「落ちるが地面を突き抜ける」状態になっているため、設定間違いが非常に起きやすい。(作者は未だによくやる)
解決策
下図の"use gravity"のチェックを外そう。
なんならその下のisKinematicのチェックも入れておくと良いと思います。最初のうちはどのプロパティがどういう意味があるのか理解できないと思うので、とりあえずGravityをオフisKinematicをオンにしておけば大体の用は済みます。
その上でコライダーを入れよう。バーチャルキャストでは使えるコライダーは"box collider"、"capsule collider"、"sphere collider"の三種類のみなので気をつけよう。
上記のどちらかのみ行っていれば消えることはないのですが、最初のうちは両方意識しましょう。
ちなみに
一旦落ちてしまうと、アイテムの更新を行うのは極めて困難です。素直に一旦タイトルに戻って読み直しましょう。
作者はフールプルーフとして、VCI作成時にsimple vciで作成設定して、最初から入ってるオブジェクトを消さずにおきます。こうすると更新用の(消失しない)アイテムが必ず手元に残るので安全です。
あと、他の事例でも言えることですが、床が透明だと気づきやすいです。落っこちていく様子が見えるので。基本的に僕は何かあったら、床のないところで原因を考えることが多いです。