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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

1回答

356閲覧

Unityで物理的な当たり判定はあっても、スクリプトが検知できなくなる方法

UDON3

総合スコア80

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2018/08/18 04:51

編集2018/08/18 14:23

なぜ必要になったのか

ボール転がし系のゲームを作っているのですが、一つのゲームオブジェクトに
レールの当たり判定用(コライダー)(スクリプトで検知してほしくない)
イベント用ボタン(コライダー)
レールの重なり防止用(トリガー)
という風にたくさんのコライダーがついています。
問題はレールの当たり判定用コライダーで、レールに当たるだけでボタンが押されたと認識してしまいます。
物理演算には影響してほしいのですが、ボタンとの区別がつかないためボタンという扱いを受けてしまいます。

お願い

物理演算が有効のままスクリプトでの検知をなくしたい。
または、一つのゲームオブジェクトのうち特定のコラーダーに当たった時のみ反応させたい。
解決できずかなり時間がたっているのでなるべく早めにお願いします。

ツール

Unity2018

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

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

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

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

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

guest

回答1

0

ベストアンサー

void OnTriggerEnter(Collider other)
で「何と接触したのか」を受け取って判断できませんか?

投稿2018/08/20 03:25

HiroshiWatanabe

総合スコア2160

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

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

UDON3

2018/08/21 04:22

そこからどうやってコライダーを判別するのかもう少し詳しくお願いします。 さらに、ボールとレールどちらにつける必要があるのかも詳しく書いていただけるとありがたいです。
HiroshiWatanabe

2018/08/21 04:36

AとBが接触した時、AにOnTriggerEnter(Collider other)があったらこのotherはBです。 同様にAとCが接触した時はもちろんこのotherはCです。 なのでotherがBなのかCなのかを判断するための材料を予め自分でルールを決めて設定しておく必要があります。 例えばGameObjectのnameで判別するとか、otherのGameObjectにアタッチしておいたスクリプトに付加情報つけておくとか、もしくはTagで振り分けるとか…等々。 ボールとレールのどちらにつけるかも設計次第なのでどちらでも構いません。 接触した時に何をどうしたいのかのニーズに合わせてどちらが処理に便利なのかを考えればOKなのでどちらでなければならないという決まりはありません。
UDON3

2018/08/21 04:41

別のオブジェクトなら楽だと思うのですが、BCが同じオブジェクトについているのです。 その場合どう判別すればいいのでしょうか
HiroshiWatanabe

2018/08/21 04:48

別のオブジェクトに分けてください(親オブジェクトにコライダーの分だけそれぞれのコライダーがついた子オブジェクトをぶら下げる)=1つのオブジェクトにコライダーは1つ
UDON3

2018/08/21 05:04 編集

前の環境ではできなかったこともやってみたらできました。 親、子、両方にコライダーを作って試してみても、動作しました。製作したプロジェクト自体はバージョンアップで壊れてしまったのですが。動作が確認できたので、今後の参考にしようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問