読者です 読者をやめる 読者になる 読者になる

Double Piece

見習いプログラマーによるUnity,DirectXTKだったりのメモブログ

名工大ハッカソンに向けての予習2

こんばんは。

さて、前回はOnCollision系とOnTrigger系の違いについて軽く触れましたが、詳しいのは書いてなかったので今回は続きを書いていきます。

 

まずOnCollision系ですが、前回軽く紹介した通りOnCollisionExitは衝突している状態から離れた時、OnCollisionStayは衝突している間ですね。

この2つは多分皆さんがパッと思いついた挙動と同じような感じになってくれると思うので詳しい紹介は割愛します。

 

というわけで本題。OnTrigger系についてです。

こちらはオブジェクト同士を衝突させずに当たり判定を取るというものですね。例えば「チェックポイントの通過」とかは衝突させずに当たり判定を取りたいですよね。

 

では、分かりやすいようにUnity上でやってみます。前回書いたコードに追記していきます。

 

ちょこっと追加しただけです。どっちの関数が呼ばれるかを試すためにデバッグログ出力してます。

そしてCubeにRigidbodyをアタッチしてUseGravityのチェックを外します。これでCube君は無重力空間にいるみたいな状態になりましたね。

 

じゃ、これで再生します。

f:id:mkp0824:20170423040348g:plain

うん、これCubeのColliderのIsTriggerにチェックつけた方がよかったね。

と思って取り直していたののですが途中でロイロ君がグレてしまったので断念。

次まで使うまでに新しいソフト入れておこう。

IsTriggerにチェックつけるとSphere君がCube君を通過しつつデバッグログの方に「Collider」と出力されます(投げやり)

 

簡単に使い分けをまとめますと

IsTriggerにチェックを付けてるならOnTrigger~~~

IsTriggerにチェックを付けてないならOnCollision~~~

と理解しておけばとりあえずは大丈夫かなと。

 

Rigidbodyの有無に関係する、というような内容の記事も見つけたのですが自分の方で試したところRigidbodyはいまいち関係なさそうだったのと、記事自体が古かったので「う~ん?」

という感じでした。なんかもやもやするので記事自体はここで終わりますがもうちょっと調べてみようと思います。

 

 

 

今回はここまで。