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

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

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

Q&A

1回答

5113閲覧

Unity2Dにおける衝突判定と壁の乗り越え

herbgeter

総合スコア7

0グッド

0クリップ

投稿2016/03/06 21:56

やりたい事 画像参考

・キャラクターが自動で左右いづれかに動く
・キャラクタが壁にぶつかったら
1段差までなら上る、そしてまた歩く
2段差以上だと左右反転する
・落ちる、場合には段差無視で落ちる(物理に任せれば良いと考える)

イメージ説明

調べたところ character controller を使うと
意図したものができそうでしたが2Dでは利用できないようでした。
変わりの手法はありませんか?

ポイントは次の2つだと考えています
・横方向で壁にぶつかった、の判定
・壁の高さの判別

----------自分で考えたものは次のとおりです。

coll.gameObject.CompareTag

などで接触判定を行おうと思いましたがブロック1種類なので
タグの名前で 判別することができません。

解決法として考えたのが
上端のみにコライダを持つものと、左右にコライダを持つものの
2つのオブジェクトを重ねて、接触しているタグで左右接触か接地接触かを判別する方法です。が結局壁の高さを判断することができませんでした。

質問:もっとスマートな解決方法はありませんか?
質問:段差の高さを判別する方法がわかりません。

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

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

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

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

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

guest

回答1

0

方法1:個別に名前orタグを変更
非常に面倒なやり方ではありますが、GameObjectは(例えプレハブから生成したものでも)シーン上に置いた後なら名前やタグを変更できます。
シーン上のオブジェクトが固定である・個数が少ないならば、個別に名前かタグを変えていって「ここは○段」と区別できます。

方法2:キャラクターの頭上に左右に出っ張ったCollider(isTriggerをオン)を付ける
イメージとしては、キャラクターに見えない麦わら帽子を被せて、つば(横に出っ張った部分)がブロックに当たるかを判定します。(キャラクターから半ブロック分、上あたりに設置するといいかと思います)

登る動きをどう実装するか不明ですが、落下中など不慮の動きを避けるため足元にも同様のCollider(こちらはキャラクターの幅より小さめ)を用意しておくとよいかと思います。
「接地中(=足元のColliderがぶつかっている)かつ、帽子Colliderがぶつかっていないなら登れる」と判定すればスムーズにいくかと。

投稿2016/03/15 14:56

sakura_hana

総合スコア11427

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問