Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 避免碰撞_C#_Unity3d_Collision - Fatal编程技术网

C# 避免碰撞

C# 避免碰撞,c#,unity3d,collision,C#,Unity3d,Collision,我知道使用物理。碰撞来避免两个特定物体之间的碰撞。但我希望他们的盒子碰撞器处于活动状态,这样它就能检测到他们正在接触。有没有办法做到这一点 另外,在我使用Physics.collision()禁用碰撞后,我可以重新激活对象之间的碰撞吗 Physics.IgnoreCollision(obj2.GetComponent<Collider>(), this.GetComponent<Collider>()); Physics.IgnoreCollision(obj2.Get

我知道使用物理。碰撞来避免两个特定物体之间的碰撞。但我希望他们的盒子碰撞器处于活动状态,这样它就能检测到他们正在接触。有没有办法做到这一点

另外,在我使用Physics.collision()禁用碰撞后,我可以重新激活对象之间的碰撞吗

Physics.IgnoreCollision(obj2.GetComponent<Collider>(), this.GetComponent<Collider>());
Physics.IgnoreCollision(obj2.GetComponent(),this.GetComponent());

在Unity菜单栏中,转到
编辑>项目设置
,然后选择物理类别以打开物理窗口。您将找到一个矩阵,在这里您可以取消选中两个层之间的碰撞。如果将玩家放在一个层中,而不想碰撞的对象放在另一个层中,并且在矩阵中取消选中该框,则所有内容都将保持其属性,玩家不会与其发生碰撞。

请参见

忽略
:是否应忽略两个碰撞器之间的碰撞

默认值为
true

要重新启用以前禁用的冲突,只需传入
false

Physics.IgnoreCollision(obj2.GetComponent<Collider>(), this.GetComponent<Collider>(), false);
Physics.IgnoreCollision(obj2.GetComponent(),this.GetComponent(),false);

如果您不希望对象发生碰撞,但如果它们彼此接触,则进行注册,然后对它们进行触发

如果对象是触发器,则它不会对碰撞作出反应,但会触发一个触发器

脚本系统可以检测何时发生冲突,并使用OnCollisionCenter函数启动操作。但是,您也可以使用物理引擎 简单地检测一个碰撞器何时进入另一个碰撞器的空间而不创建碰撞。配置为触发器(使用Is Trigger属性)的碰撞器不会表现为实体对象,只允许其他碰撞器通过。当碰撞器进入其空间时,触发器将调用触发器对象脚本上的OnTriggerEnter函数