【VRChatワールドギミック】Height Check
- Digital0 JPY

コライダーの当たり判定をプレイヤーの伸長に合わせる、VRChat向けのUdonギミックです。 ボーンの位置でチェックを行うため、Humanoidアバターであれば見た目に関わらず正常に動作します。
----------------------------
以下マニュアルと同文 Height Checkマニュアル 1.基本仕様 2.使用方法 3.ライセンス 1.基本仕様 1.1 Height Checkとは Height CheckはVRChat上でY軸上のコライダーに対するプレイヤーの当たり判定をより詳細に設定できるスクリプトです。 1.2 設定について Height CheckはHeightCheck_Main, HeightCheck,の二つのスクリプトから構成されています。それぞれの設定項目は以下のようになっています。 HeightCheck_Main ・Jump Permission - Height Checkが行われているコライダー内でジャンプできるかどうかの許可。チェックが入っているとジャンプ可能。 ※許可のチェックは読み込み時に一度のみ行われるため、後からの変更は不可能。 ・Base Impulse - プレイヤーのジャンプ力。Jump Permissionにチェックが入っている時のみに使用される値。 HeightCheck ・Height - プレイヤーが通れるかどうかを判断する高さ。 オブジェクトのTransformのy軸の値が使用される。判断はプレイヤーのHeadボーンを基準に行われる。 ・Wall - プレイヤーが通れないと判断した際に使用されるオブジェクト。 ・Player Extension - プレイヤーのHeadボーンから更に上に判定を伸ばしたい場合に使用。分からない場合はデフォルト値 ~ 0で使用する事を推奨。 1.3 構造 Height Checkは以下の要素から構成されています。 Trigger - プレイヤーの接触判定、このコライダーにプレイヤーが接触した際に高さの判定を行う。 WallRender - 壁の見た目、コライダーはつけない。 Height - プレイヤーの伸長の高さの判定。このオブジェクトより身長が高いと通れなくなる。 WallCollider – 身長がHeightより高い場合に設定されるコライダー。通り道全体を覆うサイズにすると良い。 2.使用方法 2.1 クイックスタート HeightCheck > Prefab内にあるHeightCheck_MainとHeightCheckをシーン内に配置します。 HeightCheck_Mainはシーン内に一つだけ配置して下さい。また、オブジェクト名を変更しないでください。HeightCheckに個数制限はないので必要に応じて配置して下さい。 プレイヤーの通れる高さを変えたい場合はWallRenderを動かして下さい。この時にY軸以外を動かさないよう注意して下さい。 2.2 使用方法 0.HeightCheck_Mainの配置 HeightCheck > Prefab内にあるHeightCheck_Mainをシーン内へ配置して下さい。HeightCheck_Mainはシーン内に一つだけ配置して下さい。また、オブジェクト名を変更しないでください。 1 .トリガーの作成 トリガーはプレイヤーが接触するコライダーです。空のゲームオブジェクトにコライダー、HeightCheckスクリプトをアタッチして下さい。このコライダーには全ての種類のコライダーコンポーネントが使用できます。 コライダーのIs Triggerにチェックを入れ、実際の当たり判定(Wall Collider)より少しだけ大きくなるよう設定して下さい(Scale 0.2 ~ 0.4程度)。また、Y軸のサイズはWall Colliderのサイズを超えないようにして下さい。ただし、小さすぎるとプレイヤーを検出できなくなることがあります(Scale 0.5以上を推奨)。 (通路サイズ < トリガー < Wall Collider) 2.Wall Colliderの作成 Wall Colliderは実際にプレイヤーの移動を阻むコライダーです。空のゲームオブジェクトにコライダーをアタッチして下さい。こちらのコライダーのIs Triggerにはチェックを入れないでください。 また、制限する高さに関わらず、コライダーは通路全体を覆うようなサイズにすることを推奨します。 3.見た目の設定 通路の見た目を設定します。空のゲームオブジェクトにMesh Render等のコンポーネントをアタッチして下さい。この際にコライダーを入れないように注意して下さい。 4.高さの設定 空のゲームオブジェクトを作成し、制限したい高さに合わせてください(3で設定した通路の天井など)。 5.各種設定 トリガーのHeightCheckスクリプトのHeightに4で作成したオブジェクト、Wallに2で作成したオブジェクトをアタッチして下さい。その他の設定は1.2を参照してください。 2.3 細かな仕様に関して ・ジャンプの許可(Jump Permission)に関して 負荷軽減のため、許可のチェックはスクリプト読み込み時(ワールドにjoinした時)のみ読み込む設定にしています。 ・天井抜けについて VRChatの仕様上、根本的に防止する事は出来ません。 Jump Permissionやシェーダー等を活用して下さい。 また、身長の判定はコライダーに触れた際のみに発生するので、コライダー内で身長が変わった場合は対処できません。 ・アクション(ジャンプなど)が付随する際の判定について Headボーンの位置を使用している仕様上、アニメーションによってプレイヤーの位置がずれると、その位置を使用して判定が実行されます。従ってジャンプして隙間に飛び移る等のアクションを行う場合は正しい判定が出ない可能性が高くなります。 ・オブジェクト名について HeightCheck_Mainはオブジェクト名を参照して変数の受け渡しを行っているため、変更するとプログラムが正常に動作しなくなります。 ・同期について Height Checkはローカルで動作するため、プレイヤー間での同期は一切ありません。 ・動作確認済みバージョン Unity 2019.4.31f1 VRChat SDK – Worlds 3.4.2 / 3.4.1 VRChat Package Resolver Tool 0.1.26 VRChat SDK – Base 3.4.2/3.4.1 3.ライセンス Copyright © 2023 serd_685 All Rights Reserved. This software is released under the MIT License, see LICENSE.txt. https://opensource.org/license/mit/