質問するログイン新規登録
Unity

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

Q&A

解決済

1回答

5916閲覧

Unity-RaycastでOnCollisionStay/Exitのような判定をする

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

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

1グッド

0クリップ

投稿2017/06/16 20:45

1

0

RaycastでOncollisionStayのような継続した接触や、OnCollisionExitのような接触の終わりを検知することは可能でしょうか?

phisics.Raycastを用いて、rayがぶつかっている間だけ、あるスクリプトの特定のメソッドを非稼働にするようにしたいのですがうまくいきません。

上記のような検知ができれば、メソッドをbool型変数hoge=trueの場合のみ実行されるようにして、あとは接触が始まってから終わるまでの間だけhoge=falseを代入してやれば実装できると思うんです。

解答よろしくお願いします。

_Beginner👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

リファレンスに載っているサンプルでは、たとえばレイの衝突中だけレイに沿った線を描くものは

C#

1using UnityEngine; 2 3public class ExampleClass : MonoBehaviour 4{ 5 void Update() 6 { 7 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 8 RaycastHit hit; 9 10 if (Physics.Raycast(ray, out hit, 100)) 11 Debug.DrawLine(ray.origin, hit.point); 12 } 13}

のように毎回Raycastを行っていますので、これに倣って作るのが楽ではないでしょうか。

投稿2017/06/16 23:18

Bongo

総合スコア10816

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

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

退会済みユーザー

退会済みユーザー

2017/06/17 08:24

解答ありがとうございます。 試してみたのですが、rayの接触が終わった後もhoge=falseのままで、hoge=trueに戻すタイミングを取れずに進んでしまいます。 やっぱり変数をスイッチみたく切り替えるためにはRaycastでなくコライダを使うべきなんでしょうか
Bongo

2017/06/17 09:57

それでしたら、if文にelse節を設けて、そこでhoge=trueとすれば(というより、むしろif文は削除してしまい、hoge = !Physics.Raycast(レイキャスト条件);という風に、レイキャストの結果を逆転してそれをそのままhogeに代入すれば)いけそうな気がします。いかがでしょうか?
退会済みユーザー

退会済みユーザー

2017/06/18 09:16

あ、Raycastがbool値かえすのをすっかり忘れてました なんとかなりそうです、ありがとうございましたm(._.)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問