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

上图反应的就是用户、渲染世界(游戏引擎)、物理世界(物理引擎)三者的交互关系。用户通过操作游戏引擎中的精灵、菜单等等渲染世界中的元素;游戏引擎再将相关数据给物理世界,物理世界模拟计算后的结果 传递个渲染世界以便重新绘制精灵等等对象。在此过程中两个世界将根据各自的运转周期独立运转,而物理世界中这个重要运转周期叫:时间步。

关键组成

物理引擎考虑现实的需要将现实世界做了简化和抽象。

物理世界b2World:由具有刚体属性的物体以及物体上的框架形状等等组成,它还包含了物理世界的重力向量;

物体b2Body:由具有位置、角度、阻尼等属性组成的刚体。而根据运动状态又可分为:

静态物体(b2_staticBody): 速度和质量为零的物体,一般不参与碰撞检测;

平台物体(b2_kinematicBody):按固定轨迹运动,质量为零的物体,一般不参与碰撞检测;

动态物体(b2_dynamicBody):通常根据重力以及施加的外力(如扭矩torques、冲量impulses)运动的物体。

框架b2Fixture:连接物体和形状的对象,并具有物体的质量、密度、摩察系数等等重要数据,有了这些数据才能有效的模拟物体的运动;

形状:形状是物体的简化表示,表示碰撞检测的边界。它依附于框架,一个框架只能连接一个形状。Box2D提供圆形(b2CircleShape)和多边形(b2PolygonShape);

关节b2Joint:用于连接两个物体,限制物体的运动。关节有两个重要的属性:

关节限制(joint limit):限制运动的范围;

关节马达(joint motor):驱动一个连接物体的运动。

在物体、框架和关节中提供用户数据的属性,它的类型void指针。也就是这个void指针将物理世界和渲染世界提供了数据交互的通道。

14--物理引擎Box2D的更多相关文章

  1. HTML5之2D物理引擎 Box2D for javascript Games 系列 翻外篇--如何结合createJS应用box2d.js

    太久没有更新了,新年回来工作,突然有收到网友的邮件提问,居然还有人在关注,惭愧,找了下电脑上还有一点儿存着,顺便先发这一个番外篇吧,好歹可以看到真实的效果,等我考完英语,一定会更新下一章," ...

  2. HTML5之2D物理引擎 Box2D for javascript Games 系列 第一部分

    我要的是能在H5页面上跑的javascript版的Box2D啊!!! 最近想学习Javascript版本的Box2D JS物理引擎,无奈搜了半天也没找到相对比较系统的资料 官方网站也只是简单的介绍,A ...

  3. cocos2dx-3.x物理引擎Box2D介绍

    理引擎 Cocos2d-x引擎内置了两种物理引擎,它们分别是Box2D和Chipmunk,都是非常优秀的2D物理引擎,而且x引擎将它们都内置在SDK中.Box2D使用较为广泛,在这里选择Box2D来进 ...

  4. HTML5之2D物理引擎 Box2D for javascript Games 系列 第二部分

    这是系列第二部分,之前部分在本博客中找 源码demo存放在https://github.com/willian12345/Box2D-for-Javascript-Games 向世界添加刚体 刚体(B ...

  5. HTML5之2D物理引擎 Box2D for javascript Games 系列 第三部分之创建图腾破坏者的关卡

    创建图腾破坏者的关卡 现在你有能力创建你的第一个游戏原型,我们将从创建图腾破坏者的级别开始. 为了展示我们所做事情的真实性,我们将流行的Flash游戏图腾破坏者的一关作为 我们模仿的对象.请看下面的截 ...

  6. VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置

  7. python下的Box2d物理引擎的配置

    /******************************* I come back! 由于已经大四了,正在找工作 导致了至今以来第二长的时间内没有更新博客.向大家表示道歉 *********** ...

  8. UIDynamic物理引擎

    iOS开发拓展篇—UIDynamic(简单介绍) 一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟 ...

  9. iOS开发——高级篇——UIDynamic 物理引擎

    一.UIDynamic 1.简介什么是UIDynamicUIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象重力.弹性碰撞 ...

  10. [Cocos2D-x For WP8]Box2D物理引擎

    物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动.旋转和碰撞反映.为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现.然而, ...

随机推荐

  1. recovery编译汉化

    当BoardConfig.mk中定义了recovery的字体且为中文字体时,自动编译为中文版,否则编译为英文版 例如: BOARD_USE_CUSTOM_RECOVERY_FONT := \" ...

  2. PHP 之Mysql增删改查操作案例

    1:user表: CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, PRIMARY KEY (`id`) ...

  3. c# 6.0 学习笔记

    refer : http://www.cnblogs.com/yinrq/p/5600530.html http://www.cnblogs.com/wolf-sun/p/5168217.html h ...

  4. try catch 学习记入

    执行过程 public void method(Action action) { //2.method执行中 try { action(); //3.调用委托 "; //如果action执行 ...

  5. FE: CSS固定图片显示大小及GitHub Pages在线演示

    CSS固定图片显示大小 分析 假设图片区域的大小固定为250×300px,那么我们可以写出如下的样式 .picture-area { width: 250px; height: 300px; marg ...

  6. npm 模块安装机制简介

    npm 是 Node 的模块管理器,功能极其强大.它是 Node 获得成功的重要原因之一. 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 . $ npm install 本文介绍 npm ...

  7. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  8. iBatis查询结果部分为null的解决办法

    今天第一天接触iBatis,没有系统学习过,遇到了一个简单却闹心的错误:用iBatis查询数据库中某个表的多列结果作为一个对象返回时,会出现对象的部分属性为null值得错误.例如,查询用户表中的用户I ...

  9. 3DES加密算法

    在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文.目前主流加密手段大致可分为单向加密和双向加密. 单向加密:通过对数据进行摘要计算生成密文,密文不可逆推 ...

  10. monkeyrunner总结

    device=MonkeyRunner.waitForConnection()   //手机连接 result = device.takeSnapshot()    //截图 result.write ...