我在尝试在我的精灵上绘制身体形状时遇到了很多问题。我尝试了很多组合,但我无法让它在视网膜显示器上工作。
我只支持 iPhone 视网膜和 iPad(视网膜而不是视网膜)。
A. PTM_RATIO
第一个问题是,如果我想在所有设备中使用相同的物理特性,每个设备使用哪个 PTM_RATIO。我读了几篇文章,我不知道 PTM 是代表“<strong>Point To Meter”还是“<strong>Pixel To Meter”。
¿ 哪一列是正确的?
B. 物理学
我想使用不同形状的不同图像绘制地面,但为此我使用了两种最简单的类型。200x200px 的图像,但主体只占用较低的 200x80px 矩形。
为了保持精灵外观,我对 iPhone 和 iPad SD 使用 200x200px 艺术,对 iPad HD 使用 400x400。然后我尝试为红色区域定义一个主体。我使用 Physcs Editor 尝试了所有可能的组合,并尝试使用 Vertex Helper 手动完成。我让它适用于 iPad SD,但不适用于视网膜显示器(总是 x2)。
我的顶点:
int num = 4;
b2Vec2 verts[] =
{
b2Vec2(-100.0f / 100.0, -20.0f / 100.0), //A
b2Vec2(100.0f / 100.0, -20.0f / 100.0), //B
b2Vec2(100.0f / 100.0, -100.0f / 100.0), //C
b2Vec2(-100.0f / 100.0, -100.0f / 100.0), //D
};
我除以 100,因为我使用了 200x200 艺术。我试图除以 PTM_RATIO 和 PTM_RATIO * CC_CONTENT_SCALE_FACTOR() 没有有用的结果。我试着用 400x400 的艺术来做到这一点……我想我尝试了所有可能的组合。
出于调试目的,我使用 cocos2d+Box2d 模板提供的 GLES-Render 类。
我的图层中的draw方法:
- (void) draw
{
[super draw];
ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );
kmGLPushMatrix();
world->DrawDebugData();
kmGLPopMatrix();
}
我应该使用吗?:
glScalef(CC_CONTENT_SCALE_FACTOR(), CC_CONTENT_SCALE_FACTOR(), 1);
我觉得真的卡住了。
编辑:
Pysics Editor 组合和结果:
宏定义:iPhone 为 50 PTM_RATIO,iPad 2 和 iPad 3 为 100 PTM_RATIO。