14--物理引擎Box2D
物理模拟引擎专注于模拟现实世界中物体以及物体之间的基本运动规律。在游戏中引入物理引擎能提高游戏的真实性和可玩性,如《愤怒的小鸟》中小鸟弹出的抛物线运动、《割绳子》中割后的运动等等。既然是在游戏中引入物理引擎那就设计到物理引擎和游戏引擎之间的交互,看看书中的图:

上图反应的就是用户、渲染世界(游戏引擎)、物理世界(物理引擎)三者的交互关系。用户通过操作游戏引擎中的精灵、菜单等等渲染世界中的元素;游戏引擎再将相关数据给物理世界,物理世界模拟计算后的结果 传递个渲染世界以便重新绘制精灵等等对象。在此过程中两个世界将根据各自的运转周期独立运转,而物理世界中这个重要运转周期叫:时间步。
关键组成
物理引擎考虑现实的需要将现实世界做了简化和抽象。
物理世界b2World:由具有刚体属性的物体以及物体上的框架形状等等组成,它还包含了物理世界的重力向量;
物体b2Body:由具有位置、角度、阻尼等属性组成的刚体。而根据运动状态又可分为:
静态物体(b2_staticBody): 速度和质量为零的物体,一般不参与碰撞检测;
平台物体(b2_kinematicBody):按固定轨迹运动,质量为零的物体,一般不参与碰撞检测;
动态物体(b2_dynamicBody):通常根据重力以及施加的外力(如扭矩torques、冲量impulses)运动的物体。
框架b2Fixture:连接物体和形状的对象,并具有物体的质量、密度、摩察系数等等重要数据,有了这些数据才能有效的模拟物体的运动;
形状:形状是物体的简化表示,表示碰撞检测的边界。它依附于框架,一个框架只能连接一个形状。Box2D提供圆形(b2CircleShape)和多边形(b2PolygonShape);
关节b2Joint:用于连接两个物体,限制物体的运动。关节有两个重要的属性:
关节限制(joint limit):限制运动的范围;
关节马达(joint motor):驱动一个连接物体的运动。
在物体、框架和关节中提供用户数据的属性,它的类型void指针。也就是这个void指针将物理世界和渲染世界提供了数据交互的通道。
14--物理引擎Box2D的更多相关文章
- HTML5之2D物理引擎 Box2D for javascript Games 系列 翻外篇--如何结合createJS应用box2d.js
太久没有更新了,新年回来工作,突然有收到网友的邮件提问,居然还有人在关注,惭愧,找了下电脑上还有一点儿存着,顺便先发这一个番外篇吧,好歹可以看到真实的效果,等我考完英语,一定会更新下一章," ...
- HTML5之2D物理引擎 Box2D for javascript Games 系列 第一部分
我要的是能在H5页面上跑的javascript版的Box2D啊!!! 最近想学习Javascript版本的Box2D JS物理引擎,无奈搜了半天也没找到相对比较系统的资料 官方网站也只是简单的介绍,A ...
- cocos2dx-3.x物理引擎Box2D介绍
理引擎 Cocos2d-x引擎内置了两种物理引擎,它们分别是Box2D和Chipmunk,都是非常优秀的2D物理引擎,而且x引擎将它们都内置在SDK中.Box2D使用较为广泛,在这里选择Box2D来进 ...
- HTML5之2D物理引擎 Box2D for javascript Games 系列 第二部分
这是系列第二部分,之前部分在本博客中找 源码demo存放在https://github.com/willian12345/Box2D-for-Javascript-Games 向世界添加刚体 刚体(B ...
- HTML5之2D物理引擎 Box2D for javascript Games 系列 第三部分之创建图腾破坏者的关卡
创建图腾破坏者的关卡 现在你有能力创建你的第一个游戏原型,我们将从创建图腾破坏者的级别开始. 为了展示我们所做事情的真实性,我们将流行的Flash游戏图腾破坏者的一关作为 我们模仿的对象.请看下面的截 ...
- VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置
- python下的Box2d物理引擎的配置
/******************************* I come back! 由于已经大四了,正在找工作 导致了至今以来第二长的时间内没有更新博客.向大家表示道歉 *********** ...
- UIDynamic物理引擎
iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟 ...
- iOS开发——高级篇——UIDynamic 物理引擎
一.UIDynamic 1.简介什么是UIDynamicUIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象重力.弹性碰撞 ...
- [Cocos2D-x For WP8]Box2D物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而, ...
随机推荐
- RMAN-06023: no backup or copy of datafile 6 found to restore
一:问题描述 我用指定备份集恢复时,报错: RMAN> run { 2> shutdown immediate; 3> startup mount; 4> allocate c ...
- 使用activeMQ实现jms
一:jms介绍 jms说白了就是java message service,是J2EE规范的一部分,跟jdbc差不多,sun只提供了接口,由各个厂商(provider)来进行具体的实现, ...
- SPOJ3267--D-query (树状数组离线操作)
题意查询区间 [l,r]内有多少个不同的数字 先把所有询问按 右端点进行排序,然后离线操作.如果该位置的数字 已经出现过那么把前一个位置-1,当前位置+1.扫一遍输出. #include <cs ...
- Generating SSH Keys [Ubuntu Linux]
Generating SSH Keys We strongly recommend using an SSH connection when interacting with GitHub. SSH ...
- HER COFFEE夜场代金券【1折】_北京美食团购_360团购导航
HER COFFEE夜场代金券[1折]_北京美食团购_360团购导航 HER COFFEE夜场代金券
- 形形色色的软件生命周期模型(4)——MSF、实用型
摘要: 读大学时,我们曾经学习过不少软件生命周期模型,当时还不是很懂软件开发,你可能会觉得这些东西很新奇.在实际工作中,你会发现这些模型其实很难应用,与此同时你会接触到RUP.MSF等权威软件公司的生 ...
- ORA-00314,redolog 损坏,或丢失处理方法
alertsid.log报错信息: Fri Sep 27 15:18:39 2013 Started redo scan Fri Sep 27 15:18:39 2013 Errors in file ...
- webpack之基础学习
webpack工作原理: 通过一个入口文件,main.js开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件. Webpack的核心原理 ...
- protobuf2.5 iphone5s中崩溃的问题
我们的游戏用到了protobuf2.5,在其他版本中都是好的,但iphone5s中崩溃,表现为针对DescriptorPool为空了.网上也找不到什么信息,xiaozhong同学各种尝试,都没有搞定, ...
- hdu 4848 搜索+剪枝 2014西安邀请赛
http://acm.hdu.edu.cn/showproblem.php?pid=4848 比赛的时候我甚至没看这道题,事实上不难.... 可是说实话,如今对题意还是理解不太好...... 犯的错误 ...