找回密码
 立即注册
查看: 581|回复: 0

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

[复制链接]
发表于 2021-11-21 19:55 | 显示全部楼层 |阅读模式
先上效果

软绵绵有弹性的布丁
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)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 00:35 , Processed in 0.089511 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表