Unity技術資料:トリガーイベントと衝突イベントの発生条件
UnityでOnTrigger
およびOnCollision
イベントを発生させるための条件や設定についての技術資料です。この資料では、トリガーおよび衝突イベントの基礎知識、発生条件、具体的な設定方法、イベントが発生しない場合のトラブルシューティングを解説します。
目次
各種イベント
1. トリガーイベント (OnTrigger
Events)
主なメソッド
メソッド | 説明 |
---|---|
OnTriggerEnter | 他のオブジェクトがトリガー領域に入ったときに発生。 |
OnTriggerStay | 他のオブジェクトがトリガー領域内に滞在しているとき、毎フレーム発生。 |
OnTriggerExit | 他のオブジェクトがトリガー領域から退出したときに発生。 |
発生条件
- コライダーの設定
- トリガーイベントを発生させたいオブジェクトに
Collider
コンポーネントを追加します。 - 「is Trigger」オプションを
true
に設定します。この設定により、物理的な衝突ではなく、トリガーとして動作します。
- トリガーイベントを発生させたいオブジェクトに
- Rigidbodyの設定
OnTrigger
イベントは、少なくとも一方のオブジェクトにRigidbody
コンポーネントが必要です。- トリガーとして動作するオブジェクト、またはトリガーエリアに入るオブジェクトに
Rigidbody
を追加します。
実装例
以下は、プレイヤーがトリガー領域に入ったときにログを出力する例です。
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log("Player has entered the trigger area.");
// プレイヤーがトリガー領域に入った際の処理
}
}
2. 衝突イベント (OnCollision
Events)
主なメソッド
メソッド | 説明 |
---|---|
OnCollisionEnter | 他のオブジェクトと衝突した瞬間に発生。 |
OnCollisionStay | 他のオブジェクトとの衝突が続いている間、毎フレーム発生。 |
OnCollisionExit | 他のオブジェクトとの衝突が終了したときに発生。 |
発生条件
- コライダーの設定
- 衝突イベントを発生させたいオブジェクトに
Collider
コンポーネントを追加し、「is Trigger」オプションをfalse
に設定します。
- 衝突イベントを発生させたいオブジェクトに
- Rigidbodyの設定
OnCollision
イベントも、少なくとも一方のオブジェクトにRigidbody
コンポーネントが必要です。
実装例
以下は、オブジェクトが障害物と衝突したときにログを出力する例です。
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Obstacle"))
{
Debug.Log("Collided with an obstacle.");
// 障害物との衝突時の処理
}
}
3. トリガーと衝突イベントが発生しない場合の確認事項
「is Trigger」の設定を確認
- トリガーイベントの場合、
isTrigger
はtrue
に設定されているか確認。 - 衝突イベントの場合、
isTrigger
はfalse
に設定されているか確認。
Rigidbodyの有無
- 少なくとも一方のオブジェクトに
Rigidbody
コンポーネントが設定されていることを確認します。
レイヤーの設定
- レイヤー設定によっては、物理的な衝突が無視されることがあります。
Edit > Project Settings > Physics
にて、レイヤー間の衝突が無効化されていないか確認してください。
この資料に従って設定することで、UnityにおけるOnTrigger
およびOnCollision
イベントの発生条件を満たし、ゲームオブジェクトのインタラクションを適切に制御できるようになります。
ディスカッション
コメント一覧
まだ、コメントがありません