Unity物体往下掉 如何站在地面上

Posted 刘建杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity物体往下掉 如何站在地面上相关的知识,希望对你有一定的参考价值。

文章目录


一、问题

为了实现人物能站在平面上,给人物添加刚体并勾选use gravity后,人物一直往下掉

二、解决方法

1.给人物添加collider组件,默认不勾选is Trigger

2.collider要把人物包围(最好要把人物的脚包围)
在box collider组件的center与size选项可以调整包围盒大小

3.运行后就可以站在地面了

4.如果发现人物会半嵌入地面里

4.1检查包围盒是否把人物包围了,如此小节第2点所示
4.2检查地面是否有mesh collider或其它collider组件,如果没有给其加上mesh collider,并不能勾选is Trigger。

三、简单分析

人物往下掉原因

  1. 人物没有collider组件,刚体组件又开启了重力,不知道什么时候停下来,所以一直往下掉。
  2. 虽然地面有mesh collider,但是unity规定碰撞检测collision,发生碰撞方(人物)需要有collider,而被碰撞方(地面)有没有刚体都不重要。
  3. 所以需要给人物加上collider组件,才能与地面发生碰撞检测collision

为什么人物与地面要取消勾选Is Trigger

  1. 如果一方勾选了Is Trigger,那么人物与地面接触,不会产生collision事件,而是Trigger事件
  2. 个人认为是Trigger只是检测到包围盒发生重叠与接触,但不处理这个事件
  3. 所以人物的刚体组件默认认为没有碰撞collision发生,就一直往下掉

仅代表我个人拙见,如有错误,欢迎指正,另外,谢谢观看

unity3D中,给物体添加刚体后,为啥不是掉在地面上,而是穿过地形一直往下落呢?

为fbx物体添加capsule collider组件之后再添加刚体组件,物体就不会穿过地面下沉了。在立方体上面添加一个Rigidbody刚体组件,并在上面添加一个Tertest脚本。给脚本添加OnCollisionEnter方法,可以检测碰撞collider,详细步骤:

1、打开unity3d创建一个地面Terrain。

2、接着创建一个立方体模型Cube。

3、在立方体上面添加一个Rigidbody刚体组件。

4、并在上面添加一个Tertest脚本。

5、给脚本添加OnCollisionEnter方法,可以检测碰撞collider。

6、在方法判断是否与地面Terrain接触并发生碰撞了,是的话就修改为红颜色。

if(theCollision.gameObject.name=="Terrain")

GetComponent<Renderer>().material.color = new Color (255,0,0);

7、运行unity3d场景,发现立方体会下落,当掉落到地面后就变成了红颜色。

参考技术A 碰撞体厚度小于unity里的物理设置 default contact offset就会往下掉。
Edit-project settings-physics里设置contact offset,默认是0.1调小。
比如物体碰撞体z是0.2,scale的z是0.2,0.2*0.2<0.1,就会往下掉
参考技术B 添加刚体后,你还必须给该物体添加一个碰撞。
并且该碰撞不能是meshCollider。
如果非要是MeshCollider,那你还必须给Convex打上勾
参考技术C 你这个是导入的fbx文件吧 ,为fbx物体添加capsule collider组件之后再添加刚体组件,物体就不会穿过地面下沉了 参考技术D

我也是这个问题,我最后是修改了碰撞检测collision detection模式,你看一下你的

以上是关于Unity物体往下掉 如何站在地面上的主要内容,如果未能解决你的问题,请参考以下文章

unity中物体碰撞不消失的原因

unity里怎么把墙啥的加碰撞,加box collider,mesh,和rigidbody都没有

unity怎么做利用刚体碰撞触发ui界面

unity3d 中如何去除掉一个GameObject的MeshRenderer

unity HDRP 一些坑 (物体变黑问题。。等等)

unity3d中. 地面上有一个文字, 文字上有一个cube, 现在我想在上方往下看,能透过cube看的到文字,