Unity中的刚体
发布日期:2021-06-30 19:58:37
浏览次数:3
分类:技术文章
本文共 2063 字,大约阅读时间需要 6 分钟。
在移动或旋转一个物体时,我们往往会直接使用Transform来执行这些操作。这种方法对于不具物理特性的GameObject来说,是可行的。但是一旦GameObject上附带有刚体组件,这种方式就会带来性能的损失。对于有刚体的游戏物体官方强烈建议使用物理方式使其移动
一:Rigibody2D
——BodyType:刚体类型 1.Dynaimc:动态类型,默认此类型 2.Kinematic:动力学类型(开启后游戏对象则不再受到物理引擎的影响从而只能通过Transform属性来对其操作) 3.Static:静态类型 ——Material:物理材质(本文章第三节) ——Use Auto Mass:使用自动计算的质量 ——Mass:质量(建议同一场景中的游戏对象之间的质量差值不要大于100倍) ——Linear Drag:运动方向的空气阻力 ——Angular Drag:旋转时受到的空气阻力 ——Gravity Scale:重力缩放 ——Collision Detection:碰撞检测类型,是为了避免高速运动的碰撞体进行检测时的穿模现象,例如赛车游戏 1.Discrete:离散碰撞检测,正常速度下可以使用离散碰撞检测 2.Continuous:连续碰撞检测,适用于可能会被高速移动物体撞上的物体注意使用Continuous这种类型进行检测会产生性能的消耗 ——Sleeping Mode:休眠模式 1.Never Sleep:永不休眠 2.Start Awake:在程序启动时唤醒 3.Start Asleep:在碰撞检测时唤醒,其余时间处在休眠状态 ——Interpolate:插值(基本上使用不到)——Constraints:约束,可以冻结受到物理的力所改变的位置与旋转,使用Translate进行移动并不会被影响二:Rigibody
——Mass:质量(建议同一场景中的游戏对象之间的质量差值不要大于100倍) ——Drag:运动方向的空气阻力 ——Angular Drag:旋转时受到的空气阻力 ——Use Gravity:是否使用重力 ——IsKinematic:是否开启动力学(开启后游戏对象则不再受到物理引擎的影响从而只能通过Transform属性来对其操作) ——Interpolate:插值(基本上使用不到) ——Collision Detection:碰撞检测类型,是为了避免高速运动的碰撞体进行检测时的穿模现象,例如赛车游戏 1.Discrete:离散碰撞检测,正常速度下可以使用离散碰撞检测 2.Continuous:连续碰撞检测,适用于可能会被高速移动物体撞上的物体 3.Continuous Dynamic:动态连续碰撞检测,适用于高速移动的物体 4.Continuous Speculative:推测式连续碰撞检测,这是唯一的CDD模式注意Continuous和Continuous Dynamic类型只支持使用Box,Sphere和Capusle碰撞器的刚体,而且使用这两种类型进行检测会产生性能的消耗——Constraints:约束,可以冻结受到物理的力所改变的位置与旋转,使用Translate进行移动并不会被影响三:物理材质
不设置物理材质的物体默认为infinity
——Dynamic Friction:动态摩擦力 ——Static Friction:静态摩擦力 ——Bounciness:弹力 ——Friction Combine:组合摩擦力 1.Average:平均(取两个碰撞物体的摩擦力平均值) 2.Mininum:最小值(取两个物体的摩擦力最小值) 3.Multiply:乘数(取两个物体的摩擦力的乘积) 4.Maximum:最大值(取两个物体的摩擦力最大值) ——Bonce Combine:组合弹力 1.Average:平均(取两个碰撞物体的摩擦力平均值) 2.Mininum:最小值(取两个物体的摩擦力最小值) 3.Multiply:乘数(取两个物体的摩擦力的乘积) 4.Maximum:最大值(取两个物体的摩擦力最大值)例如很多物体在同一个场景中挤着很卡,如下图所示
这是因为Unity默认碰撞物体有个Physc Material,Friction摩擦力为0.4,可以把Friction设置为0赋给碰撞的物体
四:几点需要注意的
——两个质量不同的物体从同一高度落地,时间是一样的。
例如两个物体质量分别为1和1000,在同一高度落下,落地的时间是相同的。 由公式可知,落地的时间与质量无关。 但是在现实生活中结果却不是这样,因为现实中有空气阻力的存在,而在虚拟世界或者在真空中可以完全忽略空气阻力 ——两个物体发生碰撞的条件:两个物体都有碰撞器并且其中一个有刚体组件 ——没有刚体组件的物体质量默认为infinity,所以一个有刚体的物体去碰撞一个没有刚体的物体会撞不动,一个没有刚体的物体去碰撞一个有刚体的物体会撞动 ——两个物体能否发生碰撞转载地址:https://liuhaowen.blog.csdn.net/article/details/88112699 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月20日 21时34分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux内存的寻址方式
2019-04-30
ubunut16.04的pip3出现问题,重新安装pip3
2019-04-30
how2heap-double free
2019-04-30
how2heap-fastbin_dup_consolidate
2019-04-30
orw_shellcode_模板
2019-04-30
[fmt+shellcode]string
2019-04-30
fmt在bss段(neepusec_easy_format)
2019-04-30
[double free] 9447 CTF : Search Engine
2019-04-30
python 函数式编程
2019-04-30
python编码
2019-04-30
redis cli
2019-04-30
redis api
2019-04-30
flink physical partition
2019-04-30
java 解析json
2019-04-30
java http请求
2019-04-30
tensorflow 数据格式
2019-04-30
tf rnn layer
2019-04-30
tf input layer
2019-04-30
tf model create
2019-04-30
tf dense layer两种创建方式的对比和numpy实现
2019-04-30