原文链接:http://blog.csdn.net/zhangxaochen/article/details/8009508

根据box2d 的帮助文档:

1.7 Units

Box2D works with floating point numbers and tolerances have to be used to make Box2D perform well.These tolerances have been tuned to work well withmeters-kilogram-second (MKS) units. In particular, Box2D has been tuned to work well with moving objects between 0.1 and 10meters. So this means objects between soup cans and buses in size should work well. Static objects may be up to 50meters big without too much trouble.

Being a 2D physics engine, it is tempting to use pixels as your units. Unfortunately this will lead to a poor simulation and possibly weird behavior. An object of length 200 pixels would be seen by Box2D as the size of a 45 story building.

box2d 使用MKS: 米-千克-秒 单位制,因为文档称他的浮点运算在这样的单位下表现最佳。

一般情况下,我们希望将屏幕比如 480*320 映射为10米见方左右,那么习惯上设置的 像素-米 比率为 32,即 #define PTM_RATIO 32 【PTM: pixel to meter】,那么我们便将屏幕映射到了 15m*10m 这样的小世界里去。

我们可以很快接受这个概念。但是,昨天我突然有一个奇怪的念头:

box2d 怎么知道我的 ptm_ratio 多大?或者说,为什么无论 PTM_RATIO 设为32 还是64, 为什么那个 groundBox 外边框总是能充满屏幕呢?

想了很久才明白,事实上,box2d 从来不知道也不在乎 PTM_RATIO 的大小。 这个物理引擎就想一个瞎了眼的数学高手,一直在算啊算,但是他并不负责图形的呈现。是我们写的cocos2d 的代码调用了openGles去做的绘制的工作。

如果我们设定 #define PTM_RATIO 32 那么屏幕被映射为 15*10 平米,而呈现——即,把米换为屏幕坐标的时候,一般都会做 ‘某坐标*PRM_RATIO’ 的工作,意思就是,放大32倍画在屏幕上。

如果 #define PTM_RATIO 64的话,尽管屏幕被映射为 7.5*5 平米的世界,似乎小了(物理世界确实小了),但是绘制的时候,因为我们对cocos2d 说:“给我放大64倍画出来”,所以看起来 groundBox 外框仍然充满屏幕。。。

就是这样。

原文链接:http://blog.csdn.net/zhangxaochen/article/details/8009508

{{OVER}}

Box2D 的 PTM_RATIO相关推荐

  1. (译)如何使用box2d来做碰撞检测(且仅用来做碰撞检测)

    原文链接地址:http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-i ...

  2. 2.Cocos2dx 3.2中的重力系统Box2D

     1 添加Box2D相关的库 步骤1:右击项目所在的解决方案à添加->现有项目àE:\Installed\cocos2d-x-3.2\cocos2d-x-3.2\external\Box2D ...

  3. 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

  4. cocos2d-x初探学习笔记(20)--物理引擎box2d(2)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 由于box2d的内容比较多,它也有自己的tes ...

  5. 一个基于cocos2d-x 3.0和Box2d的demo小程序

    一个基于cocos2d-x 3.0和Box2d的demo小程序 p图demo小应用.想怎么p就怎么p 本文參考于http://blog.csdn.net/xiaominghimi/article/de ...

  6. box2d 碰撞检测_(译)如何使用box2d来做碰撞检测(且仅用来做碰撞检测)

    免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...

  7. cocos2d-x for wp 之Box2D的应用

    本文大部分内容是基于fengyun1989的博文,自己只是加深巩固而已 Box2d是一款用于2d游戏的物理引擎.在这个世界里创造出的物体都更接近于真实世界的物体. 首先,在项目添加Box2D.XNA. ...

  8. cocos2d-x 3.10 显示Box2d 调试视图

    1.将cocos2d-x-3.10\tests\cpp-tests\Classes\Box2DTestBed目录下的GLES-Render.h和GLES-Render.cpp拷贝到当前项目的Class ...

  9. cocos2dx视频教程进阶篇--第2天--打砖块游戏-box2d物理引擎

    感谢大家的鼓励和支持,今天进阶篇2奉献给大家. 不了解cocos2dx基本概念的朋友,请移步 http://blog.csdn.net/s_xing/article/details/18557631. ...

最新文章

  1. [Android] Android开发优化之——对界面UI的优化(2)
  2. java head head.next_Java: 链表head取出用后,置next=null为何可以加速gc?
  3. 牛客 - 牛半仙的妹子图(并查集+bitset/克鲁斯卡尔重构树+主席树)
  4. C和指针之编译出现warning: implicit declaration of function ‘matrix_multiply‘ is invalid in C99问题
  5. codemirror java代码_codemirror使用(示例代码)
  6. 译:重置/还原Windows IIs设置为默认设置
  7. Java之品优购课程讲义_day05(8)
  8. 编译使用CEF2623遇到的错误解决办法
  9. 你所不知道的 AI 进展
  10. [生存志] 第6节 第一篇 以史为鉴 明朝事的读后心得
  11. Checking Table 设计模式 - 从概念、建模、设计到实现
  12. TypeError: strptime() takes no keyword arguments ValueError(“‘%s‘ is a bad directive in format ‘%s‘“
  13. 程序员干到30岁,真的只能转行了么?
  14. 液化石油气采样钢瓶标准取样流程
  15. 小米路由器开启外网访问SSH和WEB管理界面
  16. 网站推广技巧-网站推广常用技巧教程
  17. Linux 中 wq 、wq!、x、q、q!区别
  18. 实时车载激光雷达感知的点云深度学习
  19. 大数据实战项目--中国移动运行分析
  20. 什么是「区块链技术」、区块链又是什么?

热门文章

  1. 营业执照注册编码 15与18位的java实现
  2. FT60F011A包含1Krom+EEPROM+Flash方案
  3. 基于WeX5平台开发微信公众号中的在线问卷调查
  4. 关于TDA1557Q
  5. Windows注册表及常见子项
  6. 学生的数学学习应当是一个生动活泼,积极主动和富有个性的过程,认真听讲,积极思考,动手实践,自主 探索,合作交流等都是学习数学的主要方式,请谈谈教师如何在教学中帮助学生养成良好的数学学习习惯(论述))
  7. 视频回顾 | Pulsar Summit Asia 2020 · 场景案例(上):即时零售, 金融证券, 物联网, 电信计费等...
  8. 代码何须全部自己写,融云守护程序猿发际线
  9. uni-app上传图片base64
  10. 你大概走了假敏捷:《手绘敏捷宝典》在此,还不来收!