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

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

ただいまの
回答率

90.34%

  • Unity3D

    1431questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 989

Ans

score 63

イメージ説明

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

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

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

イメージ説明

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/19 03:22

    Cast系の使い方は理解しています
    一応Colliderを小さくすることも考えたのですが
    当たり判定細くしちゃって戦闘中とか
    攻撃がすり抜けた!とかならないかなと悩んでいました(後出し)

    でもちっちゃくする=落ちるですし
    被ダメージの当たり判定は別に作れば解決でしたね

    細い足場だけでなく単純に崖っぷちでも空中浮遊気味だったので
    そっちも解決できそうです

    いままで接地判定のためキャラコンの太さと同じスフィアキャストを撃っていたので
    少し細いものに変えて外したらColliderも細く
    として早速やってみます
    大した手間でもないし良さそうです

    一般的なゲームも崖っぷちは別処理なんでしょうか
    気になります

    もういっそ常にCharacter Controller のradiusを細くしたいんですが
    それだと体が壁にめり込んでしまってだめなんですよね 痒いところに手が届きません

    回答ありがとうございます
    また宜しくお願いします

    キャンセル

  • 2017/01/19 15:03

    足IKの接地を行うか、端に行ったら別の処理(ぶら下がりなど)をするか等、
    ゲームデザインや操作性によって実装方法は様々に変わって来るかと思います。

    アニメーションとの兼ね合いや負荷の考慮もありますので難しいところだとは思いますが、
    私の場合は「RayCast+任意タイミングでCharacterColliderリサイズ+当たり判定は別Collider」で作っていました。
    この辺りは自分に出来る最善策を探していくしかないのかな……とも思います。

    キャンセル

  • 2017/01/19 16:20

    実装してみました
    無事落ちることができました
    落ちた後radiusを一気に戻すと壁から弾かれたように見えるので
    徐々に戻して押し出される感じにしました

    代わりに起きた問題
    1
    小さな穴に落ちるとradiusが戻った際はまる(身長以下深さの小さな穴をゲーム的に作るつもりはないので今までの悩みと比べると特に問題なし)

    2
    細い状態では通常時より壁に近づけるのでその分
    追従カメラが壁の裏を写してしまう(要カメラ調整)

    こんな感じでした
    引き続き頑張ります

    sakuraさんの実装方法が聞けてとても参考になりました
    お返事ありがとうございました

    ひとまず最初の悩みの解決策が決まったのでベストアンサーとさせていただきます
    こんな風にしたよという意見はお待ちしています

    キャンセル

同じタグがついた質問を見る

  • Unity3D

    1431questions

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