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物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而, ...
随机推荐
- c语言实现灰度图转换为二值图
将上篇得到的灰度图转换为二值图,读取像素数据,低于某一值置0,否则设置为255,为得到更好的效果不同图片应采用不同的值 /* 2015年6月2日11:16:22 灰度图转换为二值图 blog:http ...
- 复杂事件处理引擎—Esper 处理模型
1.esper的处理模型是持续性的——根据statement中事件流(event stream).视图(views).过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更stat ...
- css的!important规则对性能有影响吗
最近在做项目中发现很多CSS代码里面都使用!important去覆盖原有高优先级的样式.按照常理来说,越是灵活的东西,需要做的工作就会更多.所以想当然的认为像!important这样灵活.方便的规则如 ...
- poj 3335 Rotating Scoreboard
http://poj.org/problem?id=3335 #include <cstdio> #include <cstring> #include <algorit ...
- USB的逻辑值和用途值有什么区别?
用途最小值,用途最大值.逻辑最小值,逻辑最大值分别是什么意思?如题: code uint8 ReportDescriptor[]= { //每行开始的第一字节为该条目的前缀,前缀的格式为: //D7~ ...
- 一道考验你设计能力的C++编程题
http://www.cppblog.com/weiym/archive/2012/06/12/178472.html
- Shell continue循环
[oracle@june ~]$ cat continue.sh for i in a b c d e f g do if [ "$i" = "c" ] the ...
- oschina大数据开源软件
Hadoop 图形化用户界面 Hue 大数据可视化工具 Nanocubes 企业大数据平台 RedHadoop 大数据查询引擎 PrestoDB Hadoop集群监控工具 HTools 安全大数据分析 ...
- orientationchange的兼容性
移动webapp监测屏幕旋转时常用onorientationchange事件,用此事件获取改变后的屏幕尺寸时需要注意: 1. iphone中,可立即获取改变后的屏幕尺寸. 2. android中,获取 ...
- iOS 9之WatchKit for WatchOS 2
金田(github示例源码) 自AppleWatch发行的同时就可以为AppWatch开发相应的应用程序,不过最初的版本,能开发的功能极为有限,所以也只是有少数的App厂商为Apple定制了App,所 ...