StairSlopeCollider(階段の当たり判定を見えない坂にする・Unityエディター拡張) | 段差に引っかからない階段コライダーをボタン1つで(買い切り)
- ダウンロード商品¥ 1,000





Unityでワールドやゲームを作る方向けに、階段メッシュの当たり判定を「見えない坂」にするエディター拡張です。階段のオブジェクトを指定すると、段の踏み面を自動で見つけ、段鼻(各段の前端)をなぞる坂の MeshCollider を作ります。階段に MeshCollider をそのまま付けたときの、段の角に引っかかる・下りで跳ねるといった困りごとを減らせます。直線階段・L字などの折れ階段(踊り場つき)・らせん階段に対応し、自動判定が外れたときのための手動モードもあります。生成は Ctrl+Z で元に戻せ、元のメッシュは変更しません。サンプルシーン付きです。 【購入前にお読みください】体験版はありません。購入前の確認は、販売画像と説明文でお願いします。動作確認済み環境は Windows / Unity 6(6000.5)の Built-in レンダーパイプラインです。Unity 2022.3 LTS でのコンパイル・動作は未検証です。VRChat SDK 入りのプロジェクトでの動作確認も行っておらず、URP / HDRP も未検証です。ウィンドウのボタン操作・確認ダイアログ・SceneView のハンドル操作は、制作側では自動テストでの確認までで、手で触っての確認はしていません。画像は、1〜4枚目が説明用の描画です(1〜3枚目は同梱サンプルを Unity 6 で生成して撮影した描画、4枚目は項目名をそろえて描き直したウィンドウの説明図)で、エディター画面そのもののスクリーンショットではありません。5枚目は確認結果と注意事項です。 買い切り1,000円・追加費用なしです。本製品は SaiRollStudio が制作した非公式ツールであり、Unity Technologies および VRChat Inc. の公式製品ではありません。 【特長】 ・4つのタブ:「直線階段」「折れ階段(L字・U字・踊り場つき)」「らせん階段」「手動」。タブごとに向いている形の説明が出ます ・プレビューしてから生成:階段のオブジェクトを指定すると、SceneView に水色のワイヤーで坂が出ます(黄色の線は各段の段鼻)。ウィンドウに、段数・蹴上げ・踏み面・勾配・幅・コライダーの個数が表示されます。勾配が50°を超える、段が2つ未満などの場合は、警告して生成を止めます ・生成物は対象の子 StairSlopeColliders にまとまります(すでにあれば置き換えの確認が出ます)。Ctrl+Z 1回で生成を取り消せます。「生成済みを削除」ボタンもあります ・既存の MeshCollider の無効化は選べます(既定はON・削除はしません。Ctrl+Z で戻せます)。手すりなど別の当たり判定を残したいときはOFFにできます ・調整できる項目:坂の厚み(既定0.2m)・左右の余白・上端/下端を床へ延ばす長さ(既定0.1m)・Layer・Physics Material・見えない坂の表示(デバッグ用・既定OFF)・らせんの区間の角度(既定15°) ・メッシュは1つのアセットのサブアセットとして保存します(同名の階段が複数あっても、IDが違うので互いに壊しません) ・Editor 専用(ビルドには入りません)。外部ライブラリ・サードパーティ素材の同梱なし。ウィンドウ右上で 日本語 / English を切り替えられます ・サンプルシーン付き:直線階段(10段)・L字階段(踊り場つき)・らせん階段(16段)。奥の列は元の MeshCollider のまま、手前の列は本ツールで生成した状態で、再生すると玉の動きを比べられます 【モードの選び方】 ・直線階段:一直線の階段。踏み面の高さの並びから坂の傾き・幅・上下端を求め、くさび形の Convex を1つ作ります。上端に広い平らな面があれば、そこは平らな Box になります ・折れ階段:L字・U字・踊り場つき。段を向きでまとめて「走り」に分け、走りごとに坂、踊り場は平らな Box にします。継ぎ目は少し重ねます。直線階段もこのモードで作れます ・らせん階段:鉛直な軸のまわりを回る階段。軸と内側/外側の半径を推定し、指定した角度ごとに、半径方向に約0.3m幅の帯へ分けたねじれた坂の区間(Convex)を並べます。坂は各段の踏み面の中心の高さを通ります ・手動:自動判定が外れたとき用。SceneView の4つのハンドル(下端の線 A/B・上端の線 A'/B')で坂を置きます。直線/折れ階段の最初の走りを初期値にできます 【確認した結果の一例(同梱サンプル。Unity 6 のエディター上。制作側の自動テスト35件はすべて合格)】 ・直線階段(10段・蹴上げ0.18m・踏み面0.28m・幅1.2m):段数10・勾配32.7°と推定。10個の段鼻と坂の高さの誤差は0.00m ・歩行:CharacterController(高さ1.6m・半径0.3m・stepOffset 0.05・slopeLimit 45)を秒速1.5mで4秒前進。元の MeshCollider だけでは足元の高さが最大0.08mで、1段目で止まりました。坂を生成すると最上段(1.80m)まで登れました(足元の最大は約1.9m)。L字階段の踊り場経由・らせん16段でも上れました。坂の上端は、踊り場が無ければ最上段の奥端まで平らに延びます ・玉(半径0.1m)を最上段付近から転がすと、1.4秒で床に着き、上向きの跳ねはありませんでした ・L字階段:走り2・踊り場1と推定(コライダー3個)。らせん(16段・1段22.5°):コライダー約104個(半径方向の約0.3m幅の帯に分けるため、個数が多くなります)。蹴上げ0.15〜0.25mなら、CharacterController の半径0.12・0.2・0.3m のどれでも最上段まで登れました。蹴上げ0.30m(中心での勾配45°超)は登れません ・計算時間(バッチ・計算のみ):直線・L字0ms・らせん1ms・60段でも2ms ・上はスクリプトで作った自作メッシュのサンプルでの値です。FBX など実際の階段メッシュでの確認は、制作側では行っていません。キャラクターの動かし方によって結果は変わります 【使い方(5ステップ)】 1. ダウンロードした zip(StairSlopeCollider_v1.0b.zip)を展開し、中の StairSlopeCollider_v1.0.unitypackage(zip には README_ja.txt と LICENSE.txt も入っています)を Unity のプロジェクトにインポートします(Assets/StairSlopeCollider/ に入ります) 2. メニュー Tools > StairSlopeCollider > 階段スロープ生成 でウィンドウを開きます。サンプルは Assets/StairSlopeCollider/Samples/StairSlopeSample.unity です 3. 上のタブで、階段の形に合うモードを選びます 4. 「対象(階段)」に階段のオブジェクトを指定します(ヒエラルキーで選んで「選択中を使う」でも指定できます)。SceneView の水色のワイヤーと、ウィンドウの推定結果を確認します 5. よければ「生成」。対象の子に StairSlopeColliders ができます。元の階段の MeshCollider と二重にならないよう、「既存の MeshCollider を無効化する」をONにします(既定ON)。やり直しは Ctrl+Z か「生成済みを削除」です 【動作環境】 ・動作確認済み環境は Windows / Unity 6(6000.5)・Built-in レンダーパイプラインです。Unity 2022.3 LTS でのコンパイル・動作は未検証です(2022.3 に無い API は使わない書き方にしていますが、実機では試していません)。VRChat SDK 入りプロジェクトでの動作確認も行っていません。URP / HDRP での実動作は未検証です(「見えない坂を表示する」のデバッグ表示だけ、マテリアルを1つ作ります) ・Mac / Linux のエディターは未確認です ・Editor 専用。ビルドには含まれません。外部ライブラリの同梱なし ・unitypackage は175,591バイト(約171KiB) 【ライセンス】 ・ご自身の作品(ワールド・ゲームなど。商用も可)で自由にお使いいただけます。ツール本体・ソースコード・サンプルの再配布・転売・譲渡は禁止です。生成した MeshCollider とメッシュは、作品の一部として配布できます。著作者: SaiRollStudio ・本製品は SaiRollStudio が制作した非公式ツールであり、Unity Technologies および VRChat Inc. の公式製品ではありません 【注意事項】 ・体験版はありません。購入前の確認は、販売画像と説明文でお願いします ・Unity 6(6000.5)で、同梱サンプルでの生成と、制作側の自動テスト(直線・L字・らせんの推定、歩行、玉の転がり、Undo、同名オブジェクト、対象なしや平らな床のときの案内など)で確認しました。ウィンドウのボタンのクリック、確認ダイアログ、フォルダ選択ダイアログ、SceneView のワイヤー表示と手動モードのハンドルの見た目・操作感は、手で触っての確認をしていません(自動テストと、ウィンドウの描画イベントの実行確認までです) ・Unity 2022.3 LTS・VRChat SDK 入りプロジェクト・URP / HDRP は未検証です。これらでの利用を目的とする方は、この点をご確認のうえご検討ください ・階段の踏み面が、ワールドの上向きにほぼ水平(傾き15°以内)であることが前提です。傾けて置いた階段は未対応です。同じ高さに複数の踏み面がある階段(左右に分かれた階段など)は、1つずつ別のオブジェクトにしてください(警告が出ます) ・段の見つけ方:上向きの面のうち、大きさ(奥行き・幅)が近く、高さが重ならず、ほぼ一定の蹴上げで並ぶ面のグループを段とし、段数がいちばん多いものを採用します(奥行きが段ごとに違う階段や、走りごとに幅が違うL字/U字も扱えます)。手すり・側板・柱の上面などは、高さが段と重なるため除外し、除外した個数を表示します。段と同じ大きさ・同じ高さの面が複数ある場合(左右に分かれた階段、段と同じ大きさの側板など)や、蹴上げが一定でない場合は、誤った坂を作らないよう生成を止めます。また、求めた坂の平面から蹴上げの0.75倍以上ずれる段があるときも、エラーで止めて手動モードへ案内します。その場合は、階段の段だけのオブジェクトを対象にするか、手動モードを使ってください。段が曲がっていく曲がり階段は、警告が出ます ・蹴上げや奥行きが不揃いな階段では、段鼻の一部が坂の面より最大6〜15cm程度上に出ることがあります(歩行は可能です) ・次の形は自動判定が合わないことがあります(手動モードへ):蹴上げ数cmの細かい段(蹴上げ2cm等)は「段が2つ未満」で止まります/L字で2本目の走りの幅が1本目の半分未満だと、2本目が除外され1本目だけの坂になることがあります(プレビューの段数・走りの数を確認してください)/幅0.2m以上の側板・壁が同じメッシュにあると、誤った坂を作らないよう生成を止めます(段だけを別オブジェクトにしてください) ・踊り場は、短辺が段の幅の0.7倍以上・段の幅の6倍以内で、ほぼ正方形の面です。それより大きな面(広い床)は無視され、その部分に当たり判定は作りません。小さな入口のパッド(幅が段の0.7倍未満)は除外され、段と同じ大きさのパッドは1段として数えられます。両面メッシュ(表裏とも面がある)では、床の高さに Box が1つ余計にできることがあります ・既存の MeshCollider を無効化すると、手すりなど別の当たり判定も消えます。必要な場合は無効化をOFFにするか、Box などを別に付けてください(OFFのままだと元の階段の MeshCollider が残り、段に引っかかることがあります) ・面の向きが裏返ったメッシュは、踏み面が見つからず「見つかりません」と案内します。勾配が50°を超える階段・段が2つ未満のメッシュは生成できません(手動モードを使ってください)。勾配が40°を超えると警告が出ます ・踊り場は、踏み面の凸包の形の箱になります(凹んだ形は埋まります) ・らせん階段の坂は、各段の踏み面の中心の高さを通ります(前端側では最大で蹴上げの半分だけ段の中に入ります)。らせんはコライダーの個数が多くなり(サンプルの16段で約104個)、内半径が小さい階段は内側が急になるので、警告が出たら手動で確認してください。直線・折れ階段は段鼻の高さを通り、踏み面の上では最大で蹴上げ1段ぶん上にあります ・速く動く小さな物は、坂が薄いとすり抜けることがあります(Collision Detection を Continuous にするか、厚みを増やしてください) ・不均一スケール(x,y,z が違う拡大)の対象は未検証です。親の不均一スケールと子の回転が組み合わさった(せん断になる)階段は、坂が合わず登れないことがあります(スケールを揃えるか、メッシュを焼き込んでください)。走りごとに幅が違うL字/U字は、走りごとの幅で坂を作ります ・Ctrl+Z で戻るのはコライダーの配置です。保存済みメッシュの中身は戻りません。「生成済みを削除」や Ctrl+Z のあとに作り直すと新しいアセットができ、古いアセットは残ります(不要なら手で削除してください) ・できないこと:実行時(Runtime)の生成、階段以外の坂・地形の平滑化、プレハブの一括処理、動く床 【姉妹品】 メッシュの形をBoxColliderの組み合わせで近似する LiteColliderMaker(メッシュからBoxColliderを自動生成・Unityエディター拡張)も販売しています。床・壁・建物・小道具など、階段以外の形の当たり判定にはこちらをご覧ください。 https://sairollstudio.booth.pm/items/9057301





