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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

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

Unity

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

739閲覧

Unityで衝突判定をとりたい

s8079

総合スコア36

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

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

Unity

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/08/10 03:24

前提・実現したいこと

Unityで下記のソースコードを空のオブジェクトにアタッチして実行しました.
重力で落下してきたCubeが衝突してもOnCollision系のメソッドが一度も呼ばれません.
CreatePrimitiveで生成されたCubeにBoxColliderが追加されていることは確認済みです.
どのようにすれば衝突判定をとることができるでしょうか.

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class BehaviourScript : MonoBehaviour 6{ 7 GameObject obj0, obj1, obj2; 8 9 void Start() 10 { 11 obj0 = GameObject.CreatePrimitive(PrimitiveType.Cube); 12 obj0.transform.position = new Vector3(0, 0, 0); 13 obj1 = GameObject.CreatePrimitive(PrimitiveType.Cube); 14 obj1.AddComponent<Rigidbody>(); 15 obj1.transform.position = new Vector3(0, 15, 0); 16 obj2 = GameObject.CreatePrimitive(PrimitiveType.Cube); 17 obj2.AddComponent<Rigidbody>(); 18 obj2.transform.position = new Vector3(0, 30, 0); 19 } 20 21 void Update() 22 { 23 } 24 25 void OnCollisionEnter(Collision other) 26 { 27 Debug.Log("OnCollisionEnter"); 28 } 29 void OnCollisionExit(Collision other) 30 { 31 Debug.Log("OnCollisionExit"); 32 } 33 void OnCollisionStay(Collision other) 34 { 35 Debug.Log("OnCollisionStay"); 36 } 37}

補足情報(FW/ツールのバージョンなど)

Unity 2019.1.9f1 Personal

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

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

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

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

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

sakura_hana

2019/08/10 04:43

・このスクリプトが付いたオブジェクトにColliderとRigidbodyは付いていますか? ・このスクリプトが付いたオブジェクトのColliderが極端に小さかったり薄かったりしませんか? ・Cubeに付いたColliderの大きさは適切ですか? ・本当に衝突する位置になっていますか?(別角度から見たら実は衝突していなかった等ありませんか?) ひとまず上記をご確認ください。
Bongo

2019/08/12 11:50

「下記のソースコードを空のオブジェクトにアタッチして...」とおっしゃっているということは、このスクリプトが付いているオブジェクトには他に何もアタッチされていないのでしょうかね? もしobj0とobj1間、obj1とobj2間、obj2とobj0間の衝突を検出したいのでしたら、これらのオブジェクトに衝突検出用のスクリプトをアタッチしてやる必要がありそうです。
guest

回答1

0

自己解決

CubeにAddComponentで衝突判定用スクリプトを追加したところうまく動作しました.

投稿2019/08/12 13:23

s8079

総合スコア36

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問