目录

我的学习分享

记录精彩的程序人生

【Box2D】3.Box2D C++ 教程-Testbed结构

https://blog.csdn.net/Const_Gong/article/details/51459143

声明:本文翻译自Box2D tutorials-Testbed structure ,仅供学习参考。

Testbed结构

testbed框架可以让你高效的添加新的测试。当定义一个新的测试,只要写出针对于测试必要的代码即可。相对于所有测试来说的,相同功能的方法例如,创建、销毁、重设,以及控制面板上的选中框和按钮,都由testbed框架来处理,永远都不需要你亲自更改。

每个测试的设置方法——如何设置场景,鼠标/键盘的输入,等等,可以按需设置。在创建属于我们自己的测试之前,先来看看一个测试的生命周期是怎样的。

testbedstructure.png

图中橘色的部分,是我们在自己的测试中需要添加或修改的部分。具体来说,我们会通过创建一个Test类的子类,Test类封装了所有公共特性,我们会在子类中覆盖其中一些方法。让我们来看几个在Test类中可能会用到的虚方法。

 class Test ...{
      virtual void Step(Settings* settings);
      virtual void Keyboard(unsigned char key);
      virtual void MouseDown(const b2Vec2& p);
      virtual void MouseUp(const b2Vec2& p);

第一个方法,Step()实现了物理引擎中的单步迭代计算以及场景渲染。其它三个Keyboard(),MouseDown()以及MouseUp()方法允许我们获取用户当前的操作信息。这里没有覆盖设置场景的方法,因为这些操作会在子类的构造函数中完成。

记住!testbed定义了一些默认的用户输入方法,如果这些默认的输入方法够用的话,那么你就不需要覆盖这些输入方法。同样如果你不对场景渲染或者物理控制有任何特别的需求,那么你也不需要覆盖Step()方法。事实上,相对于testbed中的一些测试例子,完全可以无视上面提到的这些方法,仅靠构造函数就可以设置完毕。我记得之前告诉过你,其实这很简单,对吧…?

还有一些类的成员变量会在子类中派上用场,这些成员变量提供了所有生活在Box2D的对象的相关信息,例如地面物体,是很多模拟场景中非常普遍的需求。稍后我们将会了解到什么是世界(world)和物体(body)?

  protected:
      b2World* m_world;
      b2Body* m_groundBody;

  1. Box2D C++ 教程-简介
  2. Box2D C++ 教程-环境设置
  3. Box2D C++ 教程-Testbed结构
  4. Box2D C++ 教程-创建测试
  5. Box2D C++ 教程-物体
  6. Box2D C++ 教程-定制器
  7. Box2D C++ 教程-设置世界
  8. Box2D C++ 教程-力和冲量
  9. Box2D C++ 教程-自定义重力
  10. Box2D C++ 教程-匀速运动
  11. Box2D C++ 教程-旋转到指定角度
  12. Box2D C++ 教程-跳跃
  13. Box2D C++ 教程-使用debug Draw
  14. Box2D C++ 教程-画自己的图像
  15. Box2D C++ 教程-用户数据
  16. Box2D C++ 教程-碰撞剖析
  17. Box2D C++ 教程-源代码
  18. Box2D C++ 教程-碰撞回调
  19. Box2D C++ 教程-碰撞过滤
  20. Box2D C++ 教程-传感器
  21. Box2D C++ 教程-射线投射
  22. Box2D C++ 教程-查询 World
  23. Box2D C++ 教程-安全地移除物体
  24. Box2D C++ 教程-跳跃问题
  25. Box2D C++ 教程-幽灵顶点
  26. Box2D C++ 教程-连接器-概述
  27. Box2D C++ 教程-连接器-旋转
  28. Box2D C++ 教程-连接器-平移
  29. Box2D C++ 教程-开发环境设置(iPhone)