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

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

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

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

668閲覧

地面の境目で着地判定がされなくなる。OnTriggerExit2Dが判定され、OnTriggerEnter2Dが判定されない。

aro

総合スコア21

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/04/11 11:41

編集2019/04/11 12:14

イメージ説明
イメージ説明

Unity初心者です。2Dゲームを制作中です。
地面の境目、コライダーが入れ替わるところで、OnTriggerExit2Dが判定され、OnTriggerEnter2Dが判定されないため、しばらくジャンプが出来なくなります。
(訂正→判定されないというより、Exitの方が後に判定されるため、colliderに接触しているのにisGroudがfalseになってしまう)
(訂正②→stayを使うことにより、着地判定は可能になったが、着地をしたら足音を鳴らすという条件付だったため、stayだと足音がずっと呼び出され続けならせません。
どうすれば良いでしょうか・・・・)

現在、プレイヤーのBoxCollider+CapsuleColliderの底面に、もう一つBoxColliderを床にめり込むように設定して、下はisTriggerで着地判定させています。
地面のコライダーはPolygonColliderで作っています。
地面は、平面や山形の曲面の数種類をランダムでループさせています。
ただ、1番最初の平面と、2番目の平面の境目のところで上記の現象が起きてしまいます。
一応falseになった時に座標が呼び出されるようにしたところ、画像の地点でfalseになるようです。

解決策はありますでしょうか?

ご教授お願いしたいです。

コードは以下のようになってます。

C#

1void Update() 2{ 3   if (Input.GetMouseButtonDown(0) && isGround == true) 4   { 5     //上方向の力をかける 6     rigid2D.AddForce(Vector2.up * jumpVelocity * 50); 7   } 8} 9 10void OnTriggerEnter2D(Collider2D other) 11{ 12 13 //地面に接触した時 14 if (other.gameObject.tag == "groundTag") 15 { 16 isGround = true; 17 } 18} 19 20void OnTriggerExit2D(Collider2D other) 21{ 22 if (other.gameObject.tag == "groundTag") 23 { 24 isGround = false; 25 } 26}

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

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

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

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

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

guest

回答1

0

自己解決

stayを使って、足音は!audioSource.isPlayingで解決しました!

投稿2019/04/11 13:27

aro

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問