游戏开发中的物理之布娃娃系统

简介: 游戏开发中的物理之布娃娃系统

介绍


从3.1版开始,Godot支持布娃娃物理。Ragdolls依靠物理模拟来创建逼真的程序动画。它们在许多游戏中用于死亡动画。


在本教程中,我们将使用Platformer3D演示来设置布娃娃。


注意

您可以在GitHub或使用素材资源库下载Platformer3D演示。


设置布娃娃


创造物理骨骼


与引擎中的许多其他功能一样,有一个节点可以设置布娃娃:PhysicalBone节点。为了简化设置,您可以PhysicalBone在骨架节点中生成具有“创建物理骨架”功能的节点。


在Godot中打开平台演示,然后在Robi场景中打开。选择Skeleton节点。骨架按钮出现在顶部栏菜单上:

image.png



单击它并选择选项。Godot将为骨骼中的每个骨骼以及销钉关节生成节点和碰撞形状,以将它们连接在一起:Create physical skeletonPhysicalBone


image.png


某些生成的骨骼不是必需的:MASTER例如骨骼。因此,我们将通过移除骨架来清理骨架。


清理骨架


每个PhysicalBone需要模拟的引擎都有性能成本,因此您想要删除所有太小而无法在模拟中起作用的骨骼以及所有实用骨骼。


例如,如果我们采用人形生物,则您不想让每个手指都有骨头。您可以用一根骨头代替整只手,或者一根骨头用于手掌,一根骨头用于拇指,最后一根骨头用于其他四个手指。


删除这些物理的骨头MASTER,waist,neck,headtracker。这为我们提供了优化的骨架,并使控制布娃娃变得更加容易。


碰撞形状调整


下一个任务是调整碰撞形状和物理骨骼的大小,以匹配每个骨骼应模拟的身体部位。



关节调整


调整碰撞形状后,布娃娃几乎准备就绪。您只需要调整销钉接头即可获得更好的模拟效果。PhysicalBone节点默认分配有不受约束的销接头。要更改销钉接头,请选择PhysicalBone并在Joint部分中更改约束类型。在那里,您可以更改约束的方向及其限制。


这是最终结果:

image.png



模拟布娃娃


现在可以使用布娃娃了。要开始模拟并播放布娃娃动画,您需要调用该physical_bones_start_simulation方法。将脚本附加到骨架节点,然后在方法中调用_ready方法:


func _ready():
    physical_bones_start_simulation()



要停止模拟,请调用该physical_bones_stop_simulation()方法。

20201223164550580.gif



您还可以将模拟限制为仅几根骨头。为此,请将骨骼名称作为参数传递。这是部分布娃娃模拟的示例:



碰撞层和遮罩


确保正确设置碰撞层和蒙版,以免KinematicBody的胶囊不妨碍物理模拟:

image.png




目录
相关文章
|
机器学习/深度学习 人工智能 算法
FinRobot:开源的金融专业 AI Agent,提供市场预测、报告分析和交易策略等金融解决方案
FinRobot 是一个开源的 AI Agent 平台,专注于金融领域的应用,通过大型语言模型(LLMs)构建复杂的金融分析和决策工具,提供市场预测、文档分析和交易策略等多种功能。
1445 13
FinRobot:开源的金融专业 AI Agent,提供市场预测、报告分析和交易策略等金融解决方案
|
存储 安全 数据管理
电脑硬盘分区及合并指南
本文介绍了电脑硬盘分区的方法,包括使用Windows磁盘管理器和第三方工具如DiskGenius。创建新分区涉及打开磁盘管理,右键未分配空间新建简单卷。第三方软件可快速分区或拆分分区,但需注意数据备份。合并分区时,删除目标分区后扩展相邻分区,操作前务必备份数据。安全和合理规划硬盘空间是关键。
电脑硬盘分区及合并指南
|
Java
【工具类】图片压缩工具类,可压缩jpg, png等图片
【工具类】图片压缩工具类,可压缩jpg, png等图片
444 0
|
算法 编译器 C语言
【C语言】C++ 和 C 的优缺点是什么?
C 和 C++ 是两种强大的编程语言,各有其优缺点。C 语言以其高效性、底层控制和简洁性广泛应用于系统编程和嵌入式系统。C++ 在 C 语言的基础上引入了面向对象编程、模板编程和丰富的标准库,使其适合开发大型、复杂的软件系统。 在选择使用 C 还是 C++ 时,开发者需要根据项目的需求、语言的特性以及团队的技术栈来做出决策。无论是 C 语言还是 C++,了解其优缺点和适用场景能够帮助开发者在实际开发中做出更明智的选择,从而更好地应对挑战,实现项目目标。
588 0
|
监控 Java 数据库
Java程序如何进行不停机更新?
Java程序如何进行不停机更新?
729 1
|
数据采集 JSON 数据可视化
基于Python的51job招聘数据采集与可视化项目实践
本文介绍了一个基于Python的51job招聘数据采集与可视化项目,该项目通过自动化手段获取大量招聘信息,并运用数据分析和可视化工具对就业市场进行深度分析,旨在为求职者和企业提供数据支持和决策依据。
855 5
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
1024 1
|
安全 应用服务中间件 PHP
中间件漏洞
中间件漏洞
|
Web App开发 数据采集 Python
让ChromeDriver 125顺利运行:解决找不到chromedriver.exe的技巧
本文介绍了如何解决Selenium使用ChromeDriver时遇到的版本不匹配问题,以及如何设置环境变量。同时,文章提供了示例代码,展示如何在Python中配置Selenium使用代理IP、设定User-Agent和Cookie进行网页抓取,以提高爬虫的效率和成功率。确保ChromeDriver与Chrome浏览器版本一致,将`chromedriver.exe`添加到环境变量,然后使用`Options`和`Proxy`类配置代理和浏览器选项,最后通过`webdriver.Chrome()`启动浏览器并执行抓取任务。
1299 0
让ChromeDriver 125顺利运行:解决找不到chromedriver.exe的技巧
|
达摩院 并行计算 异构计算
modelscope调用的模型如何指定在特定gpu上运行?排除使用CUDA_VISIBLE_DEVICES环境变量
由于个人需要,家里有多张卡,但是我只想通过输入device号的方式,在单卡上运行模型。如果设置环境变量的话我的其他服务将会受影响。

热门文章

最新文章