Version: 5.4 (switch to 5.5b)
言語English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

Collider.OnCollisionEnter(Collision)

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

マニュアルに切り替える

Parameters

other 衝突イベントと関連する Collision データ

Description

この collider/rigidbody は他の collider/rigidbody に触れたときに OnCollisionEnter は呼び出されます。

OnTriggerEnter とは対照的に OnCollisionEnter はコライダーではなく、Collision が渡されます。 Collision には接触点、衝突した速度などの情報が含まれています。 この関数の collisionInfo を使用しない場合は collisionInfo パラメーターを省略することで無駄な計算を回避することができます。 注意: キネマティクスではないリジッドボディがアタッチされている場合に、衝突イベントは送信されます。衝突イベントは、無効となっている MonoBehaviour に送信され、その衝突レスポンスの中で MonoBehaviour を有効にすることが可能です。

no example available in JavaScript
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { AudioSource audio; void Start() { audio = GetComponent<AudioSource>(); } void OnCollisionEnter(Collision collision) { foreach (ContactPoint contact in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } if (collision.relativeVelocity.magnitude > 2) audio.Play(); } }

他の例:

no example available in JavaScript
// A grenade
// - instantiates a explosion prefab when hitting a surface
// - then destroys itself

using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour { public Transform explosionPrefab; void OnCollisionEnter(Collision collision) { ContactPoint contact = collision.contacts[0]; Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal); Vector3 pos = contact.point; Instantiate(explosionPrefab, pos, rot); Destroy(gameObject); } }