【基本】衝突を作る
**衝突対象**
・衝突する側:アルパカ
・衝突される側:床
アルパカを重力で落下させ、床に乗せます。
衝突には、Rigidbody 2DとCollider 2Dのコンポーネントが必要です。
1.Rigidbody 2Dをアタッチする
・`Rigidbody 2D`をアタッチすると、オブジェクトを物理演算(重力など)によって制御する事ができます。
・衝突させたいオブジェクトのどちらかにはアタッチする必要があります。
・今回は重力の影響を受けるアルパカにアタッチします。
※衝突に重要なプロパティ
・Body Type : Dynamic
・物理演算で動くオブジェクトにはDynamicを設定します。
・スクリプトで動くオブジェクトにはKinematicを設定します。
・不動のオブジェクトにはStaticを設定します。
・Simulated : ON
・OFFにした場合、物理演算がなくなり、衝突がなくなります。
・Gravity Scale
・オブジェクトに掛かる重力を設定します。
※床にもRigidbody 2Dをアタッチする場合は、デフォルトの設定では床が重力を受けて落下する挙動になります。また、Gravity Scaleを0に設定しても、アルパカの着地の力を受けて落下する挙動になる為、Body TypeをKinematicまたはStaticに設定する必要があります。
2.Collider 2Dをアタッチする
・`Collider 2D`をアタッチすると、オブジェクトに衝突判定を付与することができます。
・衝突する側、される側の両方にアタッチする必要があります。
・`Edit Collider`でオブジェクトを囲うように枠を設定します。
3.実行する
アルパカが重力で床と衝突し、乗ることを確認できました。
# 【応用】スクリプトで衝突/侵入を利用する
オブジェクト同士が接触した際の処理を実装する場合、
`Collider 2D`の`Is Trigger`の状態(ON/OFF)によって使用(オーバーライド)するメソッドが異なります。
使い分け
Is TriggerがOFF = 衝突:OnCollision2D系のメソッド
Is TriggerがON = 侵入:OnTrigger2D系のメソッド
※Collider 2Dをアタッチしたオブジェクト「いもむし」を追加して検証します。

1.Is TriggerがOFF:OnCollision2D系のメソッド
・OnCollisionEnter2D
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "imomushi")
{
Debug.Log("アルパカ「こんにちは」");
}
}
※imomushiタグを「いもむし」に設定し、「いもむし」との接触を検知してます

・OnCollisionStay2D
private void OnCollisionStay2D(Collision2D collision)
{
if (collision.gameObject.tag == "imomushi")
{
Debug.Log("いもむし「こんにちは」");
}
}
・OnCollisionExit2D
オブジェクトが接触(衝突)状態から離れたタイミングで呼び出されます。

private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.tag == "imomushi")
{
Debug.Log("アルパカ「さようなら」");
}
}
2.Is TriggerがON:OnTrigger2D系のメソッド
・OnTriggerEnter2D
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "imomushi")
{
Debug.Log("アルパカ「こんにちは」");
}
}
・OnTriggerStay2D
private void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.tag == "imomushi")
{
Debug.Log("いもむし「君には僕が見えるのかい?」");
}
}
・OnTriggerExit2D
オブジェクトが接触(侵入)状態から離れたタイミングで呼び出されます。

private void OnTriggerExit2D(Collider2D other)
{
if (other.gameObject.tag == "imomushi")
{
Debug.Log("アルパカ「…(ぞわぞわ)」");
}
}





