Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ OnCollisionEnter と OnTriggerEnter | Unity物理
Unity初心者向け

bookOnCollisionEnter と OnTriggerEnter

メニューを表示するにはスワイプしてください

OnCollisionEnter2D

使用方法:このメソッドは、このスクリプトがアタッチされているGameObjectに付属する2Dコライダーが、シーン内の他のコライダーと衝突し、かつ少なくとも一方のコライダーにRigidbody2Dがアタッチされている場合に呼び出されます。

トリガー:このメソッドは主に物理的な衝突処理に使用され、オブジェクト同士が実際に「ぶつかる」場合に利用されます。

例となるシナリオ:ジャンプしてプラットフォームに着地するキャラクターが登場するゲームを想定します。キャラクターがプラットフォームに着地した際に、着地音を再生したり、キャラクターのアニメーションを変更したり、他のアクションを発生させたい場合があります。キャラクターのコライダーがプラットフォームのコライダーと衝突したことを検出するためにOnCollisionEnter2Dを使用します。

OnTriggerEnter2D

使用方法:このメソッドは、このスクリプトがアタッチされているGameObjectに付属する2Dコライダーが、シーン内の他のコライダーと重なり、かつ少なくとも一方のコライダーで「Is Trigger」プロパティが有効になっている場合に呼び出されます。

トリガーOnCollisionEnter2Dとは異なり、このメソッドは物理的な衝突ではなく、オブジェクトが互いの空間に入ったことを検出するために使用されます。これは、ドアを物理的に押し開けることなく通り抜けるようなイメージです。

例となるシナリオ:プレイヤーがコインを集めるゲームを想定します。プレイヤーキャラクターがコインの上を通過したときに、スコアを増やし、コインを消す処理を行いたい場合があります。プレイヤーのコライダーがコインのコライダーと重なったことを検出するためにOnTriggerEnter2Dを使用します。

タグとは?

定義:タグは、UnityでGameObjectに割り当てることができる文字列値です。

目的:タグは、GameObjectsを分類・識別するために使用されます。たとえば、プレイヤー操作オブジェクト、敵、収集アイテム、障害物などを区別する際に利用されます。

タグの一般的な使用例

ゲームオブジェクトの識別:タグは、シーン内のプレイヤーキャラクター、敵、収集アイテム、ゴールなど、重要なGameObjectsを識別するためによく使用されます。

衝突検出:タグを使用して、衝突に関与するGameObjectsの種類を判別できます。たとえば、プレイヤーが敵や収集アイテムと衝突したかどうかを確認したい場合に利用します。

トリガー検出:衝突検出と同様に、タグを使ってシーン内に設定したトリガーゾーンに入ったGameObjectsを識別できます。

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
        Debug.Log("you lost");
}
  • OnCollisionEnter2D: このメソッドは、スクリプトがアタッチされているオブジェクトが他のオブジェクトと衝突したときに自動的に呼び出されるUnityの特別なメソッド。

  • Collision2D collision: このメソッドの部分は、どのオブジェクトが衝突したかなど、衝突に関する情報を提供。

  • if (collision.collider.tag == "ground"): この行は、衝突したオブジェクトに「ground」というタグが付いているかどうかを確認。タグは、Unityでオブジェクトを簡単に識別するためのラベル。

  • Debug.Log("you lost");: 衝突したオブジェクトに「ground」タグが付いている場合、この行はUnityコンソールに「you lost」と表示。ゲーム内でフィードバックを与えたり、イベントを発生させたりするための手段。

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
        Debug.Log("you won");
}
  • OnTriggerEnter2D: このメソッドは、スクリプトがアタッチされているオブジェクトが他のオブジェクトのトリガーゾーンに入ったときに自動的に呼び出されるUnityの特別なメソッド。センサーのように、ドアを通り抜けたときに検知するイメージ。

  • Collider2D collision: このメソッドの部分は、どのオブジェクトがトリガーゾーンに入ったかの情報を提供。どのオブジェクトを通過したかを示すメモのようなもの。

  • if (collision.tag == "win"): この行は、入ったオブジェクトに「win」というタグが付いているかどうかを確認。タグは、Unityでオブジェクトを簡単に識別するためのラベル。オブジェクトに「win」と書かれた名札が付いているかを確認するイメージ。

  • Debug.Log("you won");: 入ったオブジェクトに「win」タグが付いている場合、この行はUnityコンソールに「you won」と表示。ゲーム内でフィードバックを与えたり、イベントを発生させたりするための手段。何かを達成したことを知らせるメッセージが表示されるイメージ。

1. OnTriggerEnter2D を使用する場合、トリガー検出を有効にするためにコライダーのどのプロパティを true に設定する必要がありますか?

2. トリガーでない2つのコライダー間の衝突検出を処理するには、どのメソッドを使用する必要がありますか?

question mark

OnTriggerEnter2D を使用する場合、トリガー検出を有効にするためにコライダーのどのプロパティを true に設定する必要がありますか?

正しい答えを選んでください

question mark

トリガーでない2つのコライダー間の衝突検出を処理するには、どのメソッドを使用する必要がありますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  4
some-alt