LoginSignup
2

More than 3 years have passed since last update.

TriggerとKinematicについて[VCIアドカレ#8]

Last updated at Posted at 2019-05-04

はじめに

この記事はGWアドベントカレンダーという企画の「VCIアドベントカレンダー GW ver」8日目の記事です
今日はTriggerとKinematicの挙動と衝突検出について説明します。
(TriggerとKinematicに密接な関係があるわけじゃないですがまとめて説明します。ごちゃごちゃしてすみません。。。)

TriggerとKinematicの挙動

Trigger

trigger.gif
(青がTriggerがOFF,赤がTriggerがOn)
TriggerをOnにすると上記画像のように物理衝突の影響を受けないようにする(すり抜けるようにする)ことが出来ます。
useGravityをOnにしてる場合は重力の影響は受けますが、衝突の影響を受けないため床も盛大にすり抜けます。

Utity上の以下の部分の「Is Trigger」にチェックを入れるとこで設定出来ます。
IsTrigger.jpg

TriggerをOnにしても衝突判定自体は有効なため、何かとぶつかったときに検知したいが他の物体に影響を及ぼしたくないときに使用します。
いろいろなことをやろうとすると割と使う設定だと思います

Kinematic

kinematic.gif
(向かって左がkinematicがon、右がkinematicがOff)
KinematicをOnにすると上記画像のようにオブジェクトを空中に固定することが出来ます。他のオブジェクトで叩いても影響を受けません。

Utity上の以下の部分の「Is Kinematic」にチェックを入れるとこで設定出来ます。
kinematic.jpg

チェックを付けない場合はふわふわ飛んでいく状態となるため、掴みやスクリプトでのみ移動させたいVCISubItemを作りたい時に、ここにチェックを入れて使用します。
いろいろなことをやろうとすると割と使う設定だと思います

 

衝突時の判定関数

Triggerとkinematicに関する衝突判定関数の取扱についてトピックを2つ紹介します

Triggerオブジェクトと非Triggerオブジェクトの衝突判定関数

Triggerと非Triggerの衝突時の実行関数は以下の通りとなります

item側trigger hit側trigger 発火関数
off off onCollision~
on off onTrigger~
off on onTrigger~
on on onTrigger~

気をつける点として、いずれかがtriggerがonであればもう一方がoffであってもitem・hit側とも両方onTriggerが発火します。
自分のtriggerがoffであればonCollisionになるわけではないので注意です。

Kinematicとtriggerとボーンの衝突判定関数

Kinematicとボーンの衝突時の発火関数は以下の通りとなってます。
こちらは結構複雑でした。

kinematic  trigger grab状態 発火関数
off on onTrigger~
off off onCollision~
(掴んでから1回だけ)
on on onTrigger~
on off grab中 onCollision~
(掴んでから1回だけ)
on off 非grab中 発火しない

[2020/12/16 追記] ※ルームだと掴んでから1回という制限はないみたいです(確認時点)

kinematicがon,triggerがoffの時はgrab中かどうかで動作が変わり、更にgrab中の時はonclissionが1回だけ走るようになっていました
(いろいろ試しましたが詳細条件あまり自信がないです。間違っていたら指摘いただけるとありがたいです)
とりあえずほかオブジェクトに干渉しなくていい場合はontriggerをonにして置けば問題ないかと思います。

おわりに

今回はTriggerとKinematic、及び衝突時の発火関数について紹介しました。
正直書いてる途中で間違っていることが判明して書い直したりもしたのであっているか自信がないです。
ただ、調べた範囲のことは書きましたので参考になればと思います(・ω・)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2