kyuskoj 发表于 2021-11-21 19:55

Unity 用自带的2D物理系统来 制作果冻(SoftBody)

先上效果

软绵绵有弹性的布丁
https://www.zhihu.com/video/1442435915628699648
代码地址
https://github.com/yingyugang/CustomPhysics2D
看2DSoftbodyA,2DSoftbodyB,2DSoftbodyC这个场景。
我采用的是不相同的方法,A使用的是SpringJoint跟DistanceJoint,B跟C使用的是HingeJoint,HingeJoint不容易变形一些。

制作方法(之一)
可以用 Unity 创建的物理对象基本上是“刚体”(即不变形的对象)。 但是,在做游戏的时候,有时候我想做一个“像果冻一样的软物体”(英文好像叫Soft Body)。
当然,这样的对象可以直接使用付费资产来实现,但是这里我们将介绍一种不使用资产自己实现的方法。 我实际制作的样品如下。

用“2D Animation”和“Spring Joint2D”实现!
首先说一下实现方法,这次
2D Animation(可以从包管理器导入)
Spring Joint2D
我决定使用这两个来实现一个柔软的对象。 2D 动画变换精灵,弹簧关节用于再现物理中的果冻状运动。
如何制作果冻之类的游戏对象
从这里开始,我将在主体中解释如何制作它的具体程序。 主要程序如下。
将骨骼放入精灵
允许精灵在“精灵皮肤”组件中变形
将 Rigidbody 2D 附加到每个骨骼和父骨骼
将 Circle Collider 2D 附加到每个骨骼
将 Spring Joint 2D 附加到每个骨骼
让我们仔细看看每一个。
1:将骨骼放入精灵中
首先,向精灵添加骨骼。 如果导入了2D动画包,在精灵编辑器左上角的下拉菜单中应该会看到一个名为“Skinning Editor”的项目,选择它打开骨骼编辑界面。
当屏幕出现时,双击精灵选择它,并从“创建骨骼”菜单中适当地生长骨骼(见下图)。 骨骼的位置和长度无关紧要。



第二步:在“Sprite Skin”组件中使精灵变形
接下来,由于精灵不会按原样变形,因此使用名为“Sprite Skin”的组件使精灵变形。
将刚刚编辑的精灵拖放到场景中并附加 SpriteSkin 组件。 然后你会看到一个名为“创建骨骼”的按钮,点击它会自动注册骨骼。 然后,骨骼将显示在场景视图中的精灵上(见下图。有点恶心)。



第 3 步:将 Rigidbody 2D 附加到每个骨骼和父级
完成后,是时候将 Rigidbody2D 附加到每个骨骼及其父游戏对象。 如有必要,您可以更改质量,否则您不必弄乱它。
第 4 步:将 Circle Collider 2D 附加到每个骨骼
然后将 Circle Collider 2D 附加到每个骨骼。 半径大的话,移动的不好,所以取一个很小的值(比如0.05)就可以了。
第 5 步:将 Spring Joint 2D 附加到每个骨骼
最后,将 Spring Joint 2D 附加到每个骨骼。 每个骨骼需要 3 个弹簧关节,

一次一个相邻的骨头
在每个“Connected Rigidbody”中注册您的刚体。 然后按如下方式更改 Spring Joint 组件的设置:
选中“自动配置已连接”。
如果“频率”是默认值,它的行为会很奇怪,因此最好将其设置为“8”左右。
这样就完成了设置! 玩游戏,看看它的行为是否像果冻。

参考视频
Unity SoftBody 2D tutorial using sprite shape
2D Soft Body Physics Experiment in Unity (Bouncy ball, liquid simulation)
页: [1]
查看完整版本: Unity 用自带的2D物理系统来 制作果冻(SoftBody)