1. moscoara_nico

    Posted

    moscoara_nico
Changes in title
+衝突判定のあれこれ
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,68 @@
+
+1回理解してもしばらく経つとやらかしてるのでざっくり自分用まとめます。
+
+#Collision系とTrigger系
++ Collision系関数
+
+| 関数 | 呼び出されるタイミング |
+|:-----------|:------------|
+|OnCollisionEnter|他のcollider/rigidbodyに触れたとき|
+|OnCollisionExit|他のcollider/rigidbodyと触れ合うのをやめたとき|
+|OnCollisionStay|他のrigidbody/colliderに触れている間|
+
++ Trigger系
+
+| 関数 | 呼び出されるタイミング |
+|:-----------|:------------|
+|OnTriggerEnter|Collider が他のトリガーイベントに侵入したとき|
+|OnTriggerExit|Collider が other のトリガーに触れるのをやめたとき|
+|OnTriggerExit|OnTriggerStay はトリガーが 他の Collider に触れ続けている間|
+
+
+※[スクリプトリファレンス](https://docs.unity3d.com/ja/540/ScriptReference/Collider.html)より引用
+
+### 違いは<b>Rididbodyの有無</b>
+Trigger系はColliderのIsTriggerのチェックボックスをオンにするだけでOK。
+Collider系は<b>衝突するオブジェクト”両方”がColliderとRigidbodyを持っている必要がある</b>。
+
+動くもの同士の衝突判定=> Collision系
+どちらかが動かない衝突判定=> Trigger系
+
+※もっと詳しい解説 [Unityつかうよ](http://unitytsukauyo.blogspot.jp/2012/07/oncollisionhogehogeontriggerhogehoge.html) 
+※もっと詳しい具体例とか [Unityにおける衝突判定まとめ](http://qiita.com/nutti/items/1a284c4bf8c79386aca7)
+
+#衝突対象の判定
+##①タグ
+基本こっち使う(のわりに忘れがち)
+Add Tagでタグを追加して使う。
+
+```csharp:タグを使った例
+ void OnCollisionStay(Collision other)
+ {
+ if (other.gameObject.tag == "sample")
+ {
+ Destroy(other.gameObject);
+ }
+ }
+```
+
+##②レイヤー
+特定のオブジェクト同士に判定をさせたくないときに便利。
+Edit → Project Settings → Physics 2Dでできる。
+
+```csharp:レイヤーを使った例
+ void OnTriggerEnter (Collider other)
+ {
+ string layerName = LayerMask.LayerToName(other.gameObject.layer);
+
+ if( layerName == "sample")
+ {
+ Destroy(other.gameObject);
+ }
+ }
+```
+
+
+[スクリプトリファレンス](https://docs.unity3d.com/ja/current/Manual/LayerBasedCollision.html)
+
+他またあったら追記します。