返回介绍

MonoBehaviour.OnCollisionEnter(Collision) 当进入碰撞

发布于 2019-12-18 15:38:03 字数 1907 浏览 958 评论 0 收藏 0

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参数以避免不必要的运算。注意如果碰撞体附加了一个非动力学刚体,只发送碰撞事件。

JavaScript:

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();
}

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : 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();
 
    }
}

OnCollisionEnter can be a co-routine, simply use the yield statement in the function.

OnCollisionEnter可以被用作协同程序,在函数中调用yield语句。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文