关于游戏的物理引擎

2024-09-02 18:08
文章标签 引擎 游戏 物理

本文主要是介绍关于游戏的物理引擎,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

举个例子,前一阵子很火的一款游戏“愤怒的小鸟”如图:



在该游戏中,小鸟在空中飞行时,飞行轨迹为一条抛物线,符合物理逻辑规律,通过改变其发射的角度,改变其飞行的高远。

类似的各种游戏都有其一定模仿真实世界物理运动规律能力,就是通过”物理引擎“去实现的,严格意义上说,”物理引擎“模仿的物理运动规律是指牛顿力学运动规律,而非量子力学运动规律。

这篇博客中提到的各种物理引擎的介绍,为博主个人在学习C++过程中的总结,希望有什么问题请诸位看客及时提出方便博主纠正。

通过物理引擎能够使游戏中的”精灵“做出自由落体,抛物线运动,相互碰撞,反弹等效果,使用物理引擎还可以进行精确的碰撞检测,检测碰撞不使用物理物理引擎时,往往只是将精灵抽象为矩形,圆形等规则的几何图形,这样的算法比较简单,但是呈现出来的真实效果就相对较差,而且当自己去编写的时候,算法没有经过优化,性能必然不是很好。而物理引擎是经过优化的,所以建议在编写程序的时候使用已有的成熟的物理引擎。

目前只要使用的物理引擎有Box2D和Chipmunk。

物理引擎的核心概念主要有:

1.世界(world),即游戏中的物理世界。

2.物体(body),构成物理世界的基础,具有位置,旋转角度等多种特性,它上面的任何两点之间的距离都是完全不变的,它们非常的坚硬,所以也被称为刚体(rigid body)。

3.形状(shape),物体的形状,一个依附于物体的二维碰撞几何结构,具有摩擦和弹性等材料属性,由于物体被抽象成刚体,忽略了形状,但是物体间的摩擦和碰撞是与形状有关的,这时需要将形状依附在物体上。

4.接触点(contact),管理检测碰撞。

5.关节(joint),把两个或多个物体固定到一起的约束,跟人身上的关节一样,将身体的各种部分约束在一起。

物理引擎中,其本身是不包括精灵的,我的理解就是它和物理引擎相互独立,物理引擎创建一个物体后,需要通过代码将这个物体与精灵进行连接绑定,从而同步它们的状态。

这篇关于关于游戏的物理引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130684

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt