Box2D C++教程 第一节:简介
2015-07-29 06:54
549 查看
http://www.firedragonpzy.com.cn/index.php/archives/2586
声明:本文翻译自Box2D
C++ tutorial-Introduction,仅供学习参考!
简介
Box2D这个名字是世界上2D物理引擎中最好的命名,在如今大部分软件习惯采用动物的名字来
命名的情况下,似乎Box2D这个名字看起来有点土,但是名字仅仅是个名字,就像玫瑰总是能够散发出香气一样,不管她叫什么玫瑰。轻量级、健壮、高效以及非常的小巧。并且在很多平台上都开辟了很多应用。而且还是开源和免费的。详情可见Box2D官方网站http://www.box2d.org。
物理引擎实现了在实时逼真的环境中对物体的物理特性进行了模拟。虽然她可以在很多其他应用中使用,但是她的诞生却是作为游戏中的类库而产生的,因此大部分的游戏软件都会以Box2D作为主要的物理引擎来使用。引擎主要是由Erin
Catto(译者注:作者twitter:@Erin
Catto,需翻墙)开发并维护,牛b的物理引擎使用起来不应该像全日制工作那样不爽,但是使用牛b的Box2D物理引擎可以轻松当做一种业余爱好。
Box2D使用C++开发,但是被用户社区移植成许多不同的语言版本。这里列出其中的一部分,你可以在这里找到更多 http://www.box2d.org/links.html。
(Flash) http://www.box2dflash.org/
(Flash) http://www.sideroller.com/wck/
(Java) http://www.jbox2d.org/
(Python) http://code.google.com/p/pybox2d/
(Javascript) http://box2d-js.sourceforge.net/
(C#) http:code.google.com/p/box2dx/
物理引擎不是游戏引擎。Box2D只是擅长模拟物理状态并没有义务来为你渲染漂亮的图形界面,提供网络服务,创建游戏世界以及加载一个游戏关卡。如果你来到这里的目的是这些的话,那么似乎你可以在下面的链接中找到答案。
Cocos2d
iPhone
Citrus
engine
Corona
SDK
Game
salad
Pixelwave(iOS)
Dragonfire
SDK
或者:离开这里…
Box2D C++ 教程
用户手册(译者注:站内有Box2d
v2.2.0中文翻译版)几乎解释了在使用类库方面的所有知识,至少在C++方面是这样的。尽管如此,我在使用Box2D一段时间之后,仍然发现论坛里有一些问题会频繁的出现。既然这些问题我自己也曾经遇到过,那么我觉得我应该写一些如何解决这些问题的方法。如果这样做的话,我觉得可以从头开始做一个如何正确使用Box2D的教程。
在网上转了一圈,关于这方面,我发现有些人已经做了不错的工作:
Allan
Bishop(Flash)
Emanuele
Feronato(Flash)
Flashy
Todd(Flash)
Ray
Wenderlich(objc/c++/iPhone)
Seth
Ladd(Javascript)
…你?(请让我知道!)(译者注:可怜的我也只能做一些翻译的工作,惭愧啊~)
如你所看到的,主要是针对Flash的较多,不过既然我的开发环境大部分是使用C++,那么我就把教程定格在C++上。相对于上述的教程,我会尽量使用最新的版本,希望对使用C++的人有所帮助,并且我的话题对他们而言不会太过简单。最终,我希望涵盖如下内容:
基本用法
Testbed
设置(linux, windows, mac)
Testbed
结构
为testbed创建一个‘test’
物体(Bodies)
定制器(Fixtures)
World设置
自定义重力(Custom
gravity)
力与冲量(Forces
and impulses)
匀速运动(Moving
at constant speed)
让物体按指定角度旋转(Keeping
a body rotated at given angle)
跳跃(Jumping)
使用debug
draw
画自己的物体(Drawing
your own objects)
User
data
碰撞剖析(Anatomy
of a collision)
碰撞回调(Collision
callbacks)
碰撞过滤(Collision
filtering)
传感器(Sensors)
光线投射(Raycasting)
查询World(World querying)
移除物体(Removing bodies)
“触地”问题(The ‘touching the ground’question)
连接器(Joints)
一些陷阱(Some gotchas)
高级话题
车辆悬浮(Vehicle suspension)
黏性弹力(Sticky projectiles)
飞行轨迹(Projected trajectory)
爆炸(Explosions)
易碎物体(Breakable bodies)
自上而下汽车物理(Top-down car physics)
地形(Terrain)
单面墙和平台(One-way walls and platforms)
传送带(Conveyor belts)
自动扶梯?(Escalators?)
电梯(Elevators)
飞箭(Arrow in flight)
高级运动性质(Advanced character movement)
一般来说,讲解的焦点都是基于游戏平台,但是我会尽量保持应用的通用性。偶尔我会跳过引擎中和某个主题相关的高级特性,这些会放到高级话题中讲解。希望以后我再次回来的时候能够在“高级话题”中添加一些新内容。
我将会使用目前为止官方最新的release的2.1.2版本中的源代码展开讲解,大部分时候,我会往Box2D例子 源码“Testbed”中添加一个’test’作为教程的讲解代码。这样可以省去一些项目中的其他设置,例如窗体等,这样我们还可以直接使用Box2D的类库方法。更新:当前的2.1.2版本看起来有点旧了,不过与当前版本(v2.3.0)最大不同之处是链形状(chain
of shapes)。教程中的大部分特性仍然是适用的,以后我会在需要提醒的地方做一些类似这样的注释。
学习需求
接下来的教程中需要你有中等水平的C++知识。了解基本的OpenGL知识更好,但不是必须的。关于软件需求,你可以无理由的免费下载所有你想要的!哈哈!
反馈
如果你发现任何错误,对实现有一些建议,可以提交在教程页面下面,或者直接通过gmail邮箱地址联系我:’iforce2d’
在twitter(译者注:需要翻墙)上关注我可以及时了解新教程的更新。
摘自:http://www.ohcoder.com/post/2012-06-08/40027158717
声明:本文翻译自Box2D
C++ tutorial-Introduction,仅供学习参考!
简介
Box2D这个名字是世界上2D物理引擎中最好的命名,在如今大部分软件习惯采用动物的名字来
命名的情况下,似乎Box2D这个名字看起来有点土,但是名字仅仅是个名字,就像玫瑰总是能够散发出香气一样,不管她叫什么玫瑰。轻量级、健壮、高效以及非常的小巧。并且在很多平台上都开辟了很多应用。而且还是开源和免费的。详情可见Box2D官方网站http://www.box2d.org。
物理引擎实现了在实时逼真的环境中对物体的物理特性进行了模拟。虽然她可以在很多其他应用中使用,但是她的诞生却是作为游戏中的类库而产生的,因此大部分的游戏软件都会以Box2D作为主要的物理引擎来使用。引擎主要是由Erin
Catto(译者注:作者twitter:@Erin
Catto,需翻墙)开发并维护,牛b的物理引擎使用起来不应该像全日制工作那样不爽,但是使用牛b的Box2D物理引擎可以轻松当做一种业余爱好。
Box2D使用C++开发,但是被用户社区移植成许多不同的语言版本。这里列出其中的一部分,你可以在这里找到更多 http://www.box2d.org/links.html。
(Flash) http://www.box2dflash.org/
(Flash) http://www.sideroller.com/wck/
(Java) http://www.jbox2d.org/
(Python) http://code.google.com/p/pybox2d/
(Javascript) http://box2d-js.sourceforge.net/
(C#) http:code.google.com/p/box2dx/
物理引擎不是游戏引擎。Box2D只是擅长模拟物理状态并没有义务来为你渲染漂亮的图形界面,提供网络服务,创建游戏世界以及加载一个游戏关卡。如果你来到这里的目的是这些的话,那么似乎你可以在下面的链接中找到答案。
Cocos2d
iPhone
Citrus
engine
Corona
SDK
Game
salad
Pixelwave(iOS)
Dragonfire
SDK
或者:离开这里…
Box2D C++ 教程
用户手册(译者注:站内有Box2d
v2.2.0中文翻译版)几乎解释了在使用类库方面的所有知识,至少在C++方面是这样的。尽管如此,我在使用Box2D一段时间之后,仍然发现论坛里有一些问题会频繁的出现。既然这些问题我自己也曾经遇到过,那么我觉得我应该写一些如何解决这些问题的方法。如果这样做的话,我觉得可以从头开始做一个如何正确使用Box2D的教程。
在网上转了一圈,关于这方面,我发现有些人已经做了不错的工作:
Allan
Bishop(Flash)
Emanuele
Feronato(Flash)
Flashy
Todd(Flash)
Ray
Wenderlich(objc/c++/iPhone)
Seth
Ladd(Javascript)
…你?(请让我知道!)(译者注:可怜的我也只能做一些翻译的工作,惭愧啊~)
如你所看到的,主要是针对Flash的较多,不过既然我的开发环境大部分是使用C++,那么我就把教程定格在C++上。相对于上述的教程,我会尽量使用最新的版本,希望对使用C++的人有所帮助,并且我的话题对他们而言不会太过简单。最终,我希望涵盖如下内容:
基本用法
Testbed
设置(linux, windows, mac)
Testbed
结构
为testbed创建一个‘test’
物体(Bodies)
定制器(Fixtures)
World设置
自定义重力(Custom
gravity)
力与冲量(Forces
and impulses)
匀速运动(Moving
at constant speed)
让物体按指定角度旋转(Keeping
a body rotated at given angle)
跳跃(Jumping)
使用debug
draw
画自己的物体(Drawing
your own objects)
User
data
碰撞剖析(Anatomy
of a collision)
碰撞回调(Collision
callbacks)
碰撞过滤(Collision
filtering)
传感器(Sensors)
光线投射(Raycasting)
查询World(World querying)
移除物体(Removing bodies)
“触地”问题(The ‘touching the ground’question)
连接器(Joints)
一些陷阱(Some gotchas)
高级话题
车辆悬浮(Vehicle suspension)
黏性弹力(Sticky projectiles)
飞行轨迹(Projected trajectory)
爆炸(Explosions)
易碎物体(Breakable bodies)
自上而下汽车物理(Top-down car physics)
地形(Terrain)
单面墙和平台(One-way walls and platforms)
传送带(Conveyor belts)
自动扶梯?(Escalators?)
电梯(Elevators)
飞箭(Arrow in flight)
高级运动性质(Advanced character movement)
一般来说,讲解的焦点都是基于游戏平台,但是我会尽量保持应用的通用性。偶尔我会跳过引擎中和某个主题相关的高级特性,这些会放到高级话题中讲解。希望以后我再次回来的时候能够在“高级话题”中添加一些新内容。
我将会使用目前为止官方最新的release的2.1.2版本中的源代码展开讲解,大部分时候,我会往Box2D例子 源码“Testbed”中添加一个’test’作为教程的讲解代码。这样可以省去一些项目中的其他设置,例如窗体等,这样我们还可以直接使用Box2D的类库方法。更新:当前的2.1.2版本看起来有点旧了,不过与当前版本(v2.3.0)最大不同之处是链形状(chain
of shapes)。教程中的大部分特性仍然是适用的,以后我会在需要提醒的地方做一些类似这样的注释。
学习需求
接下来的教程中需要你有中等水平的C++知识。了解基本的OpenGL知识更好,但不是必须的。关于软件需求,你可以无理由的免费下载所有你想要的!哈哈!
反馈
如果你发现任何错误,对实现有一些建议,可以提交在教程页面下面,或者直接通过gmail邮箱地址联系我:’iforce2d’
在twitter(译者注:需要翻墙)上关注我可以及时了解新教程的更新。
摘自:http://www.ohcoder.com/post/2012-06-08/40027158717
相关文章推荐
- 中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
- C++ outline and interview questions (3): Class
- 中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
- Google C++ Coding Style:引用参数
- [C++]strcpy和strcpy_s安全性比较
- C++ Pragma 预处理指令
- C++对象模型——关键词所带来的差异(第一章)
- Java学习--(三)变量与常量与与C++的一些区别
- 开发一款C语言小游戏——骑士飞行棋
- c/c++对数组取地址
- c++成员指针笔记
- POJ 1273 最大流入门题 Edmonds_Karp算法
- c++编写断点续传和多线程下载模块【转】
- C\C++ 程序的编译过程
- 堆排序
- Visual C++ 2015 下的 enable_shared_from_this 原理简析
- C语言程序 指针
- C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?
- C++新特性学习(3)
- C语言中关于位域的介绍