質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

3504閲覧

3Dアクションゲームで狭い足場から落ちる方法

Ans

総合スコア75

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2017/01/18 13:40

編集2017/01/18 13:53

イメージ説明

上記の画像をご覧ください

大きなフロアがありその外周部に太い柱が立っています
その外側(画像右下)は奈落です

ユニティちゃんの足元は少しだけ足場が飛び出しています
そしてキャラクターコントローラーだと1cmでも床があればのれてしまいます

イメージ説明

考えていること
1.壁の当たり判定を見た目より少し大きくする
2.壁と関係なく見えない壁を作る
3.柱を床ギリギリまでぴっちり合わせる
4.真下にキャラコンより小さな球を常に飛ばして
「乗れてない状態」を検出して
さらに足場の方向を検出して ユニティちゃんをズラす

1はMesh Colliderだとできません
2は作業量とデバッグが大変そうです
3は床に柱をめり込ませている場合
デプスバッファの問題で使えない時があります
4は限定的な状態のために常に処理するのもスマートではない気がします

追記
Character ControllerのSkinWidthを大きめにすると
改善するのですがSkinWidthは
壁にゴリゴリ当たってると普通に貫通するので
(極端に大きくするとわかりやすいです)
いまいちあてにできない感じがします

質問
例えば一枚目の画像でユニティちゃんが引っかからずに落ちていくには
どういった方法がベストですか?
2を地道にやるのか、複合的なのか、スクリプトなのか
回答、ご意見よろしくおねがいします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

4の類型となるでしょうか、「BoxCast」「SphereCast」という機能があります。
使い方は下記サイトが詳しいです。
テラシュールブログ - 【Unity】SphereCastやBoxcastで、球や箱のあたり判定が通過できるか判断する

「Castした結果、床に当たらなかった場合はColliderをオフにする(または小さくする)」
という処理を入れれば落下させることが出来るかと思います。

投稿2017/01/18 16:46

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ans

2017/01/18 18:22

Cast系の使い方は理解しています 一応Colliderを小さくすることも考えたのですが 当たり判定細くしちゃって戦闘中とか 攻撃がすり抜けた!とかならないかなと悩んでいました(後出し) でもちっちゃくする=落ちるですし 被ダメージの当たり判定は別に作れば解決でしたね 細い足場だけでなく単純に崖っぷちでも空中浮遊気味だったので そっちも解決できそうです いままで接地判定のためキャラコンの太さと同じスフィアキャストを撃っていたので 少し細いものに変えて外したらColliderも細く として早速やってみます 大した手間でもないし良さそうです 一般的なゲームも崖っぷちは別処理なんでしょうか 気になります もういっそ常にCharacter Controller のradiusを細くしたいんですが それだと体が壁にめり込んでしまってだめなんですよね 痒いところに手が届きません 回答ありがとうございます また宜しくお願いします
sakura_hana

2017/01/19 06:03

足IKの接地を行うか、端に行ったら別の処理(ぶら下がりなど)をするか等、 ゲームデザインや操作性によって実装方法は様々に変わって来るかと思います。 アニメーションとの兼ね合いや負荷の考慮もありますので難しいところだとは思いますが、 私の場合は「RayCast+任意タイミングでCharacterColliderリサイズ+当たり判定は別Collider」で作っていました。 この辺りは自分に出来る最善策を探していくしかないのかな……とも思います。
Ans

2017/01/19 07:20

実装してみました 無事落ちることができました 落ちた後radiusを一気に戻すと壁から弾かれたように見えるので 徐々に戻して押し出される感じにしました 代わりに起きた問題 1 小さな穴に落ちるとradiusが戻った際はまる(身長以下深さの小さな穴をゲーム的に作るつもりはないので今までの悩みと比べると特に問題なし) 2 細い状態では通常時より壁に近づけるのでその分 追従カメラが壁の裏を写してしまう(要カメラ調整) こんな感じでした 引き続き頑張ります sakuraさんの実装方法が聞けてとても参考になりました お返事ありがとうございました ひとまず最初の悩みの解決策が決まったのでベストアンサーとさせていただきます こんな風にしたよという意見はお待ちしています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問