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。
三、简单分析
人物往下掉原因
- 人物没有collider组件,刚体组件又开启了重力,不知道什么时候停下来,所以一直往下掉。
- 虽然地面有mesh collider,但是unity规定碰撞检测collision,发生碰撞方(人物)需要有collider,而被碰撞方(地面)有没有刚体都不重要。
- 所以需要给人物加上collider组件,才能与地面发生碰撞检测collision
为什么人物与地面要取消勾选Is Trigger
- 如果一方勾选了Is Trigger,那么人物与地面接触,不会产生collision事件,而是Trigger事件
- 个人认为是Trigger只是检测到包围盒发生重叠与接触,但不处理这个事件
- 所以人物的刚体组件默认认为没有碰撞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里怎么把墙啥的加碰撞,加box collider,mesh,和rigidbody都没有