0

我对何时在我的应用程序中使用 CC_CONTENT_SCALE_FACTOR() 有点困惑。我使用 Box2D 进行碰撞检测,并制作了一个 b2Body 顶点。现在我应该只将每个点除以 PTM_Ratio 还是 PTM_Ratio 乘以 CC_CONTENT_SCALE_FACTOR()?

如果我不处理像素,我应该在我的应用程序的任何地方使用 CC_CONTENT_SCALE_FACTOR() 吗?我应该只像这样对 GLESDebugDraw 使用 CC_CONTENT_SCALE_FACTOR() 吗?

_debugDraw = new GLESDebugDraw( ptmRatio * CC_CONTENT_SCALE_FACTOR());?

谢谢!

4

2 回答 2

2

Box2D 世界并不关心渲染的像素数。Box2D 完全不考虑屏幕分辨率,因此无论您是否使用 Retina 显示设备,您都不应也不应该缩放任何内容。

目前只有一个方面您可能需要 CC_CONTENT_SCALE_FACTOR,那就是在使用 tilemap 时。如果我没记错的话,tileset 的宽度和高度属性以像素而不是点为单位给出。因此,您需要除以 CC_CONTENT_SCALE_FACTOR 以获得正确的点数。不知道为什么 cocos2d 内部没有这样做。

于 2012-06-26T16:36:33.463 回答
0

cocos2d 使用的所有位置都以点为单位。在视网膜设备的情况下,一个点等于两个像素。需要直接使用 CC_CONTENT_SCALE_FACTOR() 的情况很少见,并且与 box2d 无关。在使用 box2d 的情况下,您只需使用 ptmRatio 在 box2d 的米坐标和 cocos2d 的点坐标之间进行转换

于 2012-06-26T10:47:08.080 回答