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

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

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

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

Q&A

2回答

1767閲覧

2dの物体同士が衝突した時の処理が実行されない

taishi225

総合スコア27

Unity

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

0グッド

0クリップ

投稿2017/11/24 02:22

縦スクロールのゲームを作り始めたのですが、見えない壁にplayer(黒い矢印)が衝突したときの処理をしたいのです。
create emptyを押しbox collider2dを追加し、playerにpollygon collider2dを追加し、下記のようなスクリプトを書いて試してみたのですが、処理が実行されません。また壁をすり抜けるのも謎です。処理的にはplayerを右に90度向きを変えるだけなのですり抜けてもいいのですが、もやもやします。
解決方法が分かる方、ご教授頂けましたら幸いです。

イメージ説明
emptyのコンポーネント
イメージ説明
playerのコンポーネント
イメージ説明

c#

1//Player Movement.cs 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class PlayerMovement : MonoBehaviour 7{ 8 private const float speed = 5.0f; 9 10 void Update() 11 { 12 transform.position += transform.forward * speed * Time.deltaTime; 13 } 14 15 void OnCollisionEnter(Collision collision) 16 { 17 if (collision.gameObject.tag == "InvisibilityWall") 18 { 19 transform.Rotate(new Vector3(0f, 0f, -90f)); 20 } 21 else 22 { 23 Destroy(gameObject); 24 } 25 } 26} 27

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

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

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

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

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

guest

回答2

0

そもそもどちらもColliderの「Is Trigger」にチェックが入っていますので、「すり抜け」の挙動になります。
(どちらか片方がIs Triggerだとすり抜け、両方Is Triggerのチェックを外していればすり抜けない)

また、Is Triggerがオンの時はOnCollision〜系メソッドは呼ばれず、OnTrigger〜系メソッドが呼ばれます。

更に、Triggerでない場合、少なくとも片方にはRigidbody2Dが必要です。
その上でRigidbodyの設定も考慮する必要があったりと割とややこしいので、下記サイトもご覧ください。

UnityのOnCollisionとOnTriggerイベントの受け取りを検証する | Unityを使った3Dゲームの作り方(かめくめ)
【Unity】Rigidbody2Dの新しい設定「Dynamic」「Kinematic」「Static」と「Simulated」の使い分け - テラシュールブログ

投稿2017/11/24 04:43

sakura_hana

総合スコア11427

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

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

0

2Dは詳しくないのですが、3Dだとこの場合、Rigidbodyを付けて、Rigidbodyの移動メソッドで移動しないと意図した挙動にならないことがあります。

なので、そのあたりが影響していたりしませんか?

また、今回のケースはそもそも、物理挙動をさせたいのではなく、単純に「これ以上は移動させない」という意味の処理かと思うので、単純に考えて、プレイヤーの位置と壁の位置を毎フレーム比較して、壁の位置を越えていたら、という処理で十分な気がしますがいかがでしょうか?

投稿2017/11/24 02:50

edo_m18

総合スコア2283

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

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

Bongo

2017/11/24 03:29

Rigidbody2Dのアタッチ確認に加えて、衝突判定にOnCollision系を使うか、OnTrigger系を使うかも要チェックでしょうかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問