unity网格碰撞器与OnCollisionEnter

unity网格碰撞器与OnCollisionEnter,第1张

1.标记为凸起的(Convex )的网格碰撞器才能够和其他网格碰撞器发生碰撞。

2.如果碰撞双方是两个网格碰撞器(Mesh Collider)默认不会发生碰撞的,一方需要添加刚体(Rigidbody)并且 勾选Convex

勾选模型Generate Colliders选项并apply,之后场景中的此模型会自动添加mesh Collider组件

碰撞器和刚体设置完成后发生碰撞会触发void OnCollisionEnter(Collision other)方法,但是需要注意OnCollisionEnter回调方法所在的脚本必须在发生碰撞的一方物体上面挂载着(遇到过把这个回调挂载在多级父物体上结果一直不触发的情况...)

using System.Collections

using System.Collections.Generic

using UnityEngine

public class Collider : MonoBehaviour {

PaperPlaneController ppc

// Use this for initialization

void Start () {

ppc = GameObject.Find ("main").GetComponent(typeof(PaperPlaneController)) as PaperPlaneController

}

// 碰撞检测

public void OnCollisionEnter(Collision other)

{

// Debug.Log ("接触地面。。。。。" + other.gameObject.name)

//检测是否碰撞到地面

if (other.gameObject.tag == "Ground")

{

ppc.receiveGround ()

}

}

}

Unity网格碰撞器接缝问题通常是由于模型在使用时的位置、旋转或缩放等因素引起的。如果没有正确设置网格碰撞器,就会导致未覆盖到的区域无法进行碰撞检测,从而出现接缝问题。

以下是一些可能有用的解决方法:

1. 调整模型的旋转和位置:尝试将模型旋转或移动一定角度或距离。这有助于检查是否存在运算精度误差或其他边框问题,并可能解决接缝问题。

2. 重新生成网格碰撞器:在Unity编辑器中,选择模型并进入“网格渲染器”选项卡。然后选择“生成网格碰撞器”按钮,以生成新的碰撞器。这有时可以修复接缝问题。

3. 尝试使用不同的网格碰撞器类型:在Unity中,有不同类型的网格碰撞器可供选择,如Mesh Collider、Box Collider、Sphere Collider等。尝试使用不同类型的碰撞器,看看是否可以解决接缝问题。

4. 检查网格碰撞器的缩放:如果你在编辑器中调整了网格碰撞器的缩放,可能会导致接缝问题。尝试将缩放值还原为默认值,再重新调整。

希望这些方法能够帮助你解决Unity网格碰撞器接缝问题。

第1步打开unity3d场景在里面导入一个相对更复杂的模型。第2步首先我们给这个模型添加Rigdibody刚体组件。第3步接着在Compont给其添加Mesh Collider组件。第4步勾选里面的 Convex,会默认根据自己的模型生成一个碰撞范围,但是不是很精确。第5步如果要更精确的碰撞,我们可以根据模型对应的部分,创建多个碰撞网格模型。第6步然后我们展开模型,把里面的网格ear1拖放到Mesh中,然后勾选Convex就可以在对应的位置建立碰撞范围,比如这里的右边的耳朵。第7步接着我们可以再次添加一个Mesh Collider把模型的另一个耳朵ear也添加上碰撞范围ear2。第8步同样的方式我们可以把模型需要添加碰撞的地方都添加上去,然后运行就可以得到更真实的物理效果了。特别提示作为碰撞使用的每个模型网格点面不能超过256个,否则转换的时候会报错。

使用unity3D制作场景的时候,我们需要在里面导入各种模型,其中有些比较复杂的模型我们需要给其添加碰撞效果,这时候我们可以使用对应的网格碰撞组件,然后自己设置相对更精确的网格作为碰撞检测的范围就可以了,下面就给大家带来实际 *** 作,希望能帮助到有需要的人。

工具/软件

电脑型号:联想(Lenovo)天逸510S; 系统版本:Windows7; 软件版本:Unity3D

方法/步骤

第1步

打开unity3d场景在里面导入一个相对更复杂的模型。

第2步

首先我们给这个模型添加Rigdibody刚体组件。

第3步

接着在Compont给其添加Mesh Collider组件。

第4步

勾选里面的 Convex,会默认根据自己的模型生成一个碰撞范围,但是不是很精确。

第5步

如果要更精确的碰撞,我们可以根据模型对应的部分,创建多个碰撞网格模型。

第6步

然后我们展开模型,把里面的网格ear1拖放到Mesh中,然后勾选Convex就可以在对应的位置建立碰撞范围,比如这里的右边的耳朵。

第7步

接着我们可以再次添加一个Mesh Collider把模型的另一个耳朵ear也添加上碰撞范围ear2。

第8步

同样的方式我们可以把模型需要添加碰撞的地方都添加上去,然后运行就可以得到更真实的物理效果了。

特别提示

作为碰撞使用的每个模型网格点面不能超过256个,否则转换的时候会报错


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11932438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存