为什么带网格(mesh)的模型添加了刚体Rigidbody和MeshCollider,还是会从地板穿过去?

两个Gameobject 放置在空中, 一个是Cube,一个是茄子模型

Cube的Collider 是Box Collider , 茄汁的Collider 是mesh collider, 他们都添加了刚体(RigidBody)组件, 勾选了重力Gravity

但是, 运行的结果是:

正方块Cube下落, 掉到地面上停了下来

茄子下落,没有停下来, 穿透了地面,一直往下掉。

百事不得其解。。。

终于还是在官方文档中看到这段话:

There are some limitations when using the Mesh Collider. Usually, two Mesh Colliders cannot collide with each other. All Mesh Colliders can collide with any primitive Collider. If your mesh is marked as Convex, then it can collide with other Mesh Colliders.

使用网格碰撞器有一些限制条件。通常,两个网格碰撞器之间不会发生碰撞。所有的网格碰撞器可以和任何原型碰撞器碰撞。如果网格标记为凸起的(Convex),那么就可以和其他网格碰撞器碰撞。

试了一下, 把茄子Mesh Collider的Convex 勾上,

OK了, 停下来了!

还有一下注意事项:

http://www.ceeger.com/Components/class-MeshCollider.html

Hints 提示

    • Mesh Colliders cannot collide with each other unless they are marked as Convex. Therefore, they are most useful for background objects like environment geometry. 
      除非被标记为凸起的(Convex),否则网格碰撞器间不会发生碰撞。因此,它们最常被用于背景对象比如环境布景。
    • Convex Mesh Colliders must be fewer than 255 triangles. 
      凸起的网格碰撞器含有的三角形面不能多于255个。
    • Primitive Colliders are less costly for objects under physics control. 
      原型控制器对于对象的物理控制更加节省资源。
    • When you attach a Mesh Collider to a GameObject, its Mesh property will default to the mesh being rendered. You can change that by assigning a different Mesh. 
      当为游戏对象附加了网格碰撞器,其网格属性将被定义为用于渲染的网格,可以通过指派其他网格来改变。
    • To add multiple Colliders for an object, create child GameObjects and attach a Collider to each one. This allows each Collider to be manipulated independently. 
      要给一个对象添加多个碰撞器,应该创建子对象并给每个子对象添加一个碰撞器。这使每个碰撞器可以被单独操作。
    • You can look at the gizmos in the Scene View to see how the Collider is being calculated on your object. 
      可以通过场景视图(Scene View )中的线框(gizmos)来查看碰撞器在你的对象上的预期效果。
    • Colliders do their best to match the scale of an object. If you have a non-uniform scale (a scale which is different in each direction), only the Mesh Collider can match completely. 
      碰撞器尽量匹配对象的比例。如果有一组不规则伸缩(每一维度上的比例都不相同),只能使用网格碰撞器才能完全匹配。
    • If you are moving an object through its Transform component but you want to receive Collision/Trigger messages, you must attach a Rigidbody to the object that is moving. 
      如果你想接收通过Transform组件移动的对象的碰撞/触发信息,你必须给移动对象附件刚体。
时间: 2024-08-03 20:36:06

为什么带网格(mesh)的模型添加了刚体Rigidbody和MeshCollider,还是会从地板穿过去?的相关文章

LittleTools之网格输出为模型

我经常要在Unity中生成一些网格,但是这些网格需要交给美工修改,所以又要将网格输出为模型.于是就有了下面的代码: using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; /// <summary> /// 将“一个”选中的对象输出为obj格式 /// </summary>

Ogre参考手册(八)4 几何网格(Mesh)工具

4 网格(Mesh)工具 4.1 导出 导出工具是3D模型工具的插件,用于将网格和骨骼动画写入Ogre可以使用的文件格式.导出文件扩展名为.mesh(网格)和.skeleton(骨骼). 每个导出工具单独为模型工具编写,同时共用公共的类MeshSerializer和SkeletonLizer. 所有导出工具都可从源代码构建,你也可以直接从Ogre网站下载预编译的版本 Ogre动画说明 1 每个顶点不能超过四个骨骼权重.如果超过了4个,Ogre将消除较小的权重并重新标量化剩下的权重.这一限制是因为

zabbix使用自己编写脚本模板和zabbix自带模板两种方法添加对指定进程和端口的监控

zabbix使用自己编写脚本模板和zabbix自带模板两种方法添加对指定进程和端口的监控 1.自带监控模板进行os的监控 进入/usr/local/zabbix/etc/zabbix_agentd.conf 配置文件修改 LogRemoteCommands=1     ###开启脚本功能 Server=192.168.5.129     ##修改zabbix指向的服务器: 重启zabbix_agentd.zabbix_server服务 在配置-->主机-->添加主机--> 配置主机信息主

安卓自带下拉刷新SwipeRefreshLayout添加上拉刷新功能

在项目里面要用到刷新库,以前都是使用第三方的,不过看到官方出了  SwipeRefreshLayout之后就用SwipeRefreshLayout,但是不知道什么原因官方SwipeRefreshLayout只提供下拉刷新功能,很多时候我们需要上拉刷新功能,所以下载v4源码修改SwipeRefreshLayout,与之相关联的文件有两个分别是SwipeProgressBar,BakedBezierInterpolator把这三个文件拷贝到项目里面,修改一下包名就可以了.如何实现上拉刷新功能,其

ASP.NET MVC 5 - 给电影表和模型添加新字段

原文:ASP.NET MVC 5 - 给电影表和模型添加新字段 在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的.如果他们不是同步的,Entity Framework将抛出一个错误.这非常方便的在

IBM Cognos BI--为模型添加业务逻辑

典型的业务逻辑,诸如过滤器(filters)和计算(calculations)常被应用在业务视图中,在一些情况下实现这些业务逻辑是很有意义的,并且它的性能和维护成本很低的. 为模型添加过滤器 IBM Cognos Framework Manager(FM)的两种过滤器形式: 嵌入式过滤器(Embedded filters):在查询主题内部创建,它们的域被限制在查询主题上,当过滤器被用在仅一个查询主题或者维度上时是合适的,在嵌入式过滤器被创建完后还可以被转换成独立的过滤器(stand-alone

Asp.Net MVC4入门指南(7):给电影表和模型添加新字段

在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的.如果他们不是同步的,Entity Framework将抛出一个错误.这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题. (由

untiy绘制网格mesh

关于绘制网格, 雨松前辈 已经解释的非常的到位,这里我只是搬运工,实在是感觉自己去描述的话不会有雨松大神描述的清楚,该文章循序渐进,一步步引导读者去理解unirty 绘图机制,真的是没有比这个再好得了,下面是文章原文: 首先创建Unity工程,接着创建一个空的游戏对象,然后给该游戏对象绑定Mesh Filter组件 与 Mesh Renderer组件. Mesh Filter组件:表示网格面,这个网格面是由我们使用代码将所有三角形拼接起来生成的面. Mesh Renderer组件:表示表示网格的

[PHPCMS V9二次开发]自定义字段模型-添加字段类型

步骤/方法 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups. 打开phpcms\modules\content\fields\fields.inc.PHP文件,增加字段类型: 'textgroups'=>'多文件上传', 打开phpcms\modules\content\fields\textgroups目录(第一步复制的文件夹),修改以下文件: form.inc.php function textgroups($f