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イベントの発生条件を満たし、ゲームオブジェクトのインタラクションを適切に制御できるようになります。
参考
訪問数 62 回, 今日の訪問数 1回





ディスカッション
コメント一覧
まだ、コメントがありません