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物理引擎
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而, ...
随机推荐
- python: list[-1] 与 list[-1:] 的区别
>>> l '3.542485\t1.977398\t-1\r\n' >>> l.split() ['3.542485', '1.977398', '-1'] &g ...
- android弹出式菜单、弹出式对话框、弹出式窗口
http://www.open-open.com/lib/view/open1389767042601.html http://www.open-open.com/lib/view/open13321 ...
- js 中比较 undefined
// x has not been declared before if (typeof x === 'undefined') { // evaluates to true without error ...
- 随记,C#修饰符访问级别
private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. (无修饰符时默认)internal: 在同一命名空间内可以访问.public : ...
- C# 利用反射查看类的信息
using System; using System.Collections; using System.Collections.Generic; using System.Reflection; u ...
- ubuntu 创建eclipse 快捷方式
Ubuntu 上链接快捷方式,将想面内容复制并修改,命名为:eclipse.desktop #!/usr/bin/env xdg-open [Desktop Entry] Name=Eclipse C ...
- [原创]Python入门到简单网站目录扫描器编写(上)
1.字符串,整型,浮点型.区别以及用法 |------字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 可以不严格的说,你可以认为引号包括的,都属于字符串 ...
- 【微信公众号】验证用户OpenID是否关注某个公众号
1.获取OpenID #region 获取微信支付的OpenId /// <summary> /// 获取微信支付的OpenId /// </summary> /// < ...
- @JoinTable和@JoinColumn
默认情况下,JPA 持续性提供程序在映射多对多关联(或在单向的一对多关联中)的拥有方上的实体关联时使用一个连接表.连接表名称及其列名均在默认情况下指定,且 JPA 持续性提供程序假设:在关系的拥有方上 ...
- 安装orcle10g oel5.6
一.安装OEL 5.6 二.安装VMware Tools 1) 选择菜单里的VM选项,里面有一个子选项是installVMware Tools,选择它. 2) 回到操作系统,将光驱挂载到/mnt ...