Version: 5.3 (switch to 5.4b)
IdiomaEnglish
  • C#
  • JS

Idioma de script

Selecciona tu lenguaje de programación favorito. Todos los fragmentos de código serán mostrados en este lenguaje.

Rigidbody.OnCollisionEnter(Collision)

Sugiere un cambio

¡Éxito!

Gracias por ayudarnos a mejorar la calidad de la documentación de Unity. A pesar de que no podemos aceptar todas las sugerencias, leemos cada cambio propuesto por nuestros usuarios y actualizaremos los que sean aplicables.

Cerrar

No se puedo enviar

Por alguna razón su cambio sugerido no pudo ser enviado. Por favor <a>intente nuevamente</a> en unos minutos. Gracias por tomarse un tiempo para ayudarnos a mejorar la calidad de la documentación de Unity.

Cerrar

Cancelar

Cambiar al Manual

Descripción

OnCollisionEnter se llama cuando el Collider o Rigidbody entra en contacto con otro Collider o Rigidbody.

A diferencia de lo que ocurre en OnTriggerEnter, a OnCollisionEnter se le pasa la clase Collision, no un Collider. La clase Collision contiene información sobre puntos de contacto, velocidad de impacto, etc. Si no vas a usar el parámetro collisionInfo en la función, déjalo fuera para evitar cálculos innecesarios. Ten en cuenta que los eventos de colisión se envían sólo si al menos uno de los Colliders también tiene un Rigidbody no cinemático adjunto.


        
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { AudioSource audio; void Start() { audio = GetComponent<AudioSource>(); } void OnCollisionEnter(Collision collision) { // Debug-draw all contact points and normals foreach (ContactPoint contact in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); } // Play a sound if the colliding objects had a big impact. if (collision.relativeVelocity.magnitude > 2) audio.Play(); } }

Otro ejemplo:


        
// 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]; // Rotate the object so that the y-axis faces along the normal of the surface Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal); Vector3 pos = contact.point; Instantiate(explosionPrefab, pos, rot); Destroy(gameObject); } }