勇哥聊下unity中的物理效果

勇哥注:

unity中的2d物理效果基于开源的Box2D引擎,3d物理效果基于Nvidia PhysX,

包括几个关键组件:Rigidbody(刚体),Collider(碰撞器),关节(Joints)

我们只对3d物理效果有兴趣。


见图1:

场景中4个对象(先不算斜面上的cube)。

球体添加了Rigidbody

Cube有一个BoxCollider。

两个平面都添加了Mesh Collider。


播放后我们见到下面效果:

  1. 球体默认是有重力影响的,会掉到地板平面上。因为两个平面都有Mesh Collider,所以球体不能穿透地板。

  2. 鼠标可以拎起球体测,以模拟外力作用球体

  3. 球体无论怎么用力,都不可能撞开Cube,原因是Cube没有加Rigidbody刚体。

  4. 如果鼠标强行拖动球体,是可以穿过Cube的。(见图2)

act16.gif

(图1)

act17.gif

(图2)


Rigidbody参数如下:

image.png


Mass是物体质量,单位是千克kg,质量越大物体的惯性越大。

下面是球体和Cube都是质量为1时的撞击效果:

act18.gif

下面是球体质量为1000, cube质量为1的撞击效果:

act20.gif


那怎么把cube撞飞,而不是推走呢?

如果你只是把球体的mass改得很大,这是没有用的,因为质量再大,对这个场景例子中的球体的加速度没啥影响。

那我们如下图一样弄个很长的陡坡行不行呢?

答案是不行,你会发现球体是均速下来的。

这是因为这个坡和球体的摩擦力的原因。

image.png

为了降低球体,cube,两个平面的摩擦力,我们创建一个物理材质,并设置下面的参数。

image.png

把这个物体材质赋给四个对象的Collider组件。

image.png

这个时候就看到了我们想要的效果。

act21.gif

要想球体运动更快,要考虑下面几个方面:

1. 摩擦力

2. 阻力(Drag)

3. 刚体质量

   球体的质量也会影响其加速性能。在相同的力作用下,质量较大的物体需要更大的加速度才能改变其运动状态。

  虽然斜坡上的重力分量随质量增加而增加,但加速度却因质量增加而减小,二者可能相互抵消,导致匀速运动

4. 斜坡的角度

5. 物理材质中的Bounciness弹性

   我们可以针对Cube的物理材质,把它的弹性增大,它就会像乒乓球一样被弹飞。

   下图是我们把弹性改为5的效果。

   act22.gif


最后聊下Use Gravity和Is Kinematic。

image.png

一个游戏对象可以去掉Use Gravity的勾选,这样就表示不受重力的影响。

要注意的是,这个对象还是受其它物理效果的影响的,比如受到撞击会移动与旋转。

重力只是物理属性中的一种。

如下图所示:

球体不受重力影响,但是被撞击后会保持持续运动,停不下来。跟太空失重环境下的效果一样。

act23.gif


如果把球体勾选了Is Kinematic(是运动学)。

则球体是撞不动的。

运动学只受Transform的控制(即相当于脚本自己来控制),不受物理效果的控制。

act24.gif

那如果我Use Gravity和Is Kinematic两个都勾选了,会怎么样?

答案是,只要你勾选了Is Kinematic,那么再勾Use Gravity没有任何作用。


最后说几个跟效果与性能相关的参数,它们的默认值一般情况下就够用了。

(1)Interpolate 是插值,控制Rigidbody在物理模拟过程中的运动平滑度。有助于解决对象拉动的问题。

(2)Collision Detection 这个是字面意思,碰撞检测的算法。默认值就最省cpu的算法。

(3)Constraints 可以约束 Position(移动)和Rotation(旋转)。就是说被撞物体可以控制它不向约束的方向旋转或者移动。

如果全部勾选了,就等于勾选了Is Kinematic的效果。

这个还有些用,因为我们气缸推动物料的时候,其实物料只要向一个方向动就行了,其它方向要被约束住。

image.png



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-12-09 08:47:58 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864