美文网首页插件推荐
Unity中实现沙发的柔体效果

Unity中实现沙发的柔体效果

作者: Levi_Wan | 来源:发表于2017-01-09 16:41 被阅读221次

    开发中往往遇见需要实现柔体的效果,例如篮球落地会经过弹力变形,走入沙坑会陷下去,但是这些基本上都不可能会在游戏中进行实现,因为性能是一大难点。但是在VR开发中,我认为这些点终究会是需要使用到的,所以自己研究了研究。
      基于PsoftBody插件进行实现。

    Paste_Image.png

    PsoftBody目前在网上没看见使用的案例,但是自己目前处于学习状态,所以自己研究了下。
      
      PsoftBody插件的核心是基于碰撞进而改变对象的Mesh网格来实现所谓的“变形”,添加了PsoftBody组件的游戏对象,PsoftBody会为这个对象添加Mesh Collider。 我们都知道使用MeshCollider进行碰撞检测是十分的消耗性能的,但是VR开发来说,这点开销应该没多大问题。

    使用PsoftBody实现沙发的“弹性变形”效果。

    在最开始时,我想要通过模拟小球落地的效果来实现变形效果,为一个Sphere添加刚体,并添加PsoftBody组件,结果收到了报错。

    Paste_Image.png Paste_Image.png
      PsoftBody在unity5中是不支持对超过256个多边形并带有刚体组件的游戏对象进行变形的。所以我们就需要将带有刚体组件的对象来“驱动”我们想要进行“变形的物体”去变形。(这里用沙发去进行演示)
    • 搭建一个场景,如下:
    Paste_Image.png
    • 为Sphere添加刚体组件,并为我们沙发需要实现变形的地方添加PsoftBody脚本。(这里为了更好的演示效果,我将力的乘数增大(这个乘数越大对这个变形效果影响越大))
    Paste_Image.png
    • 我们运行游戏,可以观察到小球给沙发造成的变形效果。
    Paste_Image.png
    • 我们观察沙发的Mesh,发生了变化。(PsoftBody插件实现变形的原理
    Paste_Image.png
    • 那现在问题就来了,我们不可能就这样改变了Mesh实现变形了以后就不在对它进行了管理。这样对于柔体变形还不如不去实现,我们应该做到的是当小球离开的时候,我们将它的Mesh回到原来的样子,很棒的是PsoftBody帮我们实现了这个方法。
    Paste_Image.png
    • 在PsoftBody脚本里,通过PsoftCalculate()方法实现的变形,如果你想得到更符合你的变形,你可以直接更改里面的参数设定。
    Paste_Image.png
    • 使用OnCollisionExit方法,实现碰撞离开的时候恢复原状。
    Paste_Image.png Paste_Image.png
    • 如果我们想得到让人性化的体验,让沙发变形(下凹)的地方,缓慢的变回来,我们就需要使用到插值,很棒的又是PsoftBody也为我们提供了这个方法。
    Paste_Image.png Paste_Image.png

    PsoftBody的参数解析。

    Paste_Image.png

      在插件中的已经写得很详细了。

    Paste_Image.png
    • SoftBody Settings:
      • Min Soft Velocity:触发变形计算所需的最小速度。
      • Impact Scale:碰撞造成的缩放影响,越大的刻度意味着更大的凹坑。
      • Force Multiplier: 碰撞力的乘数,结果越大凹痕越深。

    需要插件的朋友可以私密我。

    相关文章

      网友评论

      • YuYP:求发一下插件,1762274011@qq.com,感激不尽!!
      • 你说过海是倒过来的天:我的物体表面三角面片很少 小球碰撞的时候不是砸出一个凹坑 而是把整个物体砸平了。。请问这种情况该怎么解决呢
        你说过海是倒过来的天:@Levi_Wan 我的模型是圆柱 请问怎么增加顶点呢  ̄□ ̄||
        Levi_Wan:@你说过海是倒过来的天 增加模型顶点
      • LeoYangXD:来一个插件

      本文标题:Unity中实现沙发的柔体效果

      本文链接:https://www.haomeiwen.com/subject/lykhbttx.html