首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OnCollisionEnter函数是如何“从根本上”工作的?

OnCollisionEnter函数是如何“从根本上”工作的?
EN

Stack Overflow用户
提问于 2019-06-11 17:56:10
回答 2查看 433关注 0票数 1

我对c#和团结非常陌生,我有一个问题。我无法从根本上理解OnCollisionEnter是如何工作的。

比如,如果我有一个地形和一个悬浮在上面的球体,它有刚体成分,我写到:-

代码语言:javascript
复制
void OnCollisionEnter(Collision other)
{
    Debug.Log(other.gameObject.name);
}

然后运行控制台屏幕上的代码,就可以得到"Sphere“而不是”the“。为什么球被传递到“其他”而不是地形?

其次,我相信OnCollisionEnter是MonoBehavior类的一部分,我们的类已经从MonoBehavior继承了它。

那么,为什么我们必须再次定义OnCollisionEnter()呢?

这些问题真让我头疼。如果有人能帮我,我将非常感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-11 18:09:22

为什么球被传递到“其他”而不是地形?

other中传递的内容取决于您将该组件附加到.如果将它附加到地形上,那么在other中,您应该得到Sphere,反之亦然。你看,other这个名字其实有点道理,对吧?

那么,为什么我们必须再次定义OnCollisionEnter()呢?

MonoBehaviour中,您可以在诸如AwakeUpdateStart等其他类的"Messages"中找到OnCollisionEnter,而不是在“私有/公共/任何方法”下找到。

简而言之:消息仅在内部被统一进程调用,如果在组件中存在,则根本不调用消息(如果不存在)。

我认为他们在后台使用类似于Component.SendMessage的东西,但不确定。

在此游戏对象中的每个methodName上调用名为methodName的方法。

票数 2
EN

Stack Overflow用户

发布于 2019-06-11 18:06:10

它的工作原理:“当这个对撞机/刚体开始接触另一个刚体/对撞机时调用OnCollisionEnter”-- https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html OnCollisionEnter是其他功能之一(更新、固定更新、启动、唤醒等),如果定义在引擎本身调用的MonoBehavior派生类的主体中,即这些是引擎事件函数。

为什么要在sphere上触发:,因为您的方法在类中附加到了球面对象,请参阅上面OnCollisionEnter的工作方式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56549318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档