- Awake
- CancelInvoke
- FixedUpdate
- InvokeRepeating
- Invoke
- IsInvoking
- LateUpdate
- OnApplicationFocus
- OnApplicationPause
- OnApplicationQuit
- OnBecameInvisible
- OnBecameVisible
- OnCollisionEnter
- OnCollisionExit
- OnCollisionStay
- OnConnectedToServer
- OnControllerColliderHit
- OnDestroy
- OnDisable
- OnDisconnectedFromServer
- OnDrawGizmosSelected
- OnDrawGizmos
- OnEnable
- OnFailedToConnectToM...
- OnFailedToConnect
- OnGUI
- OnJointBreak
- OnLevelWasLoaded
- OnMasterServerEvent
- OnMouseDown
- OnMouseDrag
- OnMouseEnter
- OnMouseExit
- OnMouseOver
- OnMouseUpAsButton
- OnMouseUp
- OnNetworkInstantiate
- OnParticleCollision
- OnPlayerConnected
- OnPlayerDisconnected
- OnPostRender
- OnPreCull
- OnPreRender
- OnRenderImage
- OnRenderObject
- OnSerializeNetworkView
- OnServerInitialized
- OnTriggerEnter
- OnTriggerExit
- OnTriggerStay
- OnWillRenderObject
- Reset
- StartCoroutine
- Start
- StopAllCoroutines
- StopCoroutine
- Update
- useGUILayout
MonoBehaviour.OnCollisionEnter 当进入碰撞
function OnCollisionEnter (collisionInfo : Collision) : void
Description描述
OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.
当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionEnter将被调用。
In contrast to OnTriggerEnter, OnCollisionEnter is passed the Collision class and not a Collider . The Collision class contains information about contact points, impact velocity etc. If you don't use collisionInfo in the function, leave out the collisionInfo parameter as this avoids unneccessary calculations. Note that collision events are only sent if one of the colliders also has a non-kinematic rigid body attached.
相对于OnTriggerEnter,OnCollisionEnter传递的是Collision类而不是Collider。Collision包含接触点,碰撞速度等细节。如果在函数中不使用碰撞信息,省略collisionInfo参数以避免不必要的运算。注意如果碰撞体附加了一个非动力学刚体,只发送碰撞事件。
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
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();
}
}
function OnCollisionEnter(collision : Collision ) {
// Debug -draw all contact points and normals
// 绘制所有接触点和法线
for (var contact : ContactPoint in collision.contacts)
Debug.DrawRay (contact.point, contact.normal, Color.white );
// Play a sound if the coliding objects had a big impact.
// 如果碰撞体有较大冲击就播放声音
if (collision.relativeVelocity.magnitude > 2)
audio.Play();
}
OnCollisionEnter can be a co-routine, simply use the yield statement in the function.
OnCollisionEnter可以被用作协同程序,在函数中调用yield语句。