谁能告诉我身体尺寸和像素数(在box2d中)之间的关系。一米长度有多少像素?更具体地说,我在我的程序中使用以下代码行
多边形体.SetAsBox(1, 1);
在这段代码中,SetASBox 的参数是什么。我的意思是它是像素值还是其他一些单位。
谁能告诉我身体尺寸和像素数(在box2d中)之间的关系。一米长度有多少像素?更具体地说,我在我的程序中使用以下代码行
多边形体.SetAsBox(1, 1);
在这段代码中,SetASBox 的参数是什么。我的意思是它是像素值还是其他一些单位。
一米大约是32像素。
不看手册,我的猜测是,因为SetAsBox()
它是一个 box2d 函数,它需要以米为单位的参数。因此,如果您有像素值,则可以使用此定义轻松转换为米:
#define PTM_RATIO 32
在你的文件中包含这个可以让你忘记比率,只要你需要在像素和米之间进行转换,就可以使用这个定义。当您实际进行转换时,您可以根据上下文除以或乘以该比率 (32/1)。例如:
CGSize winSize = [[CCDirector sharedDirector] winSize];
b2Body *body = world->GetBodyList();
if(body->GetPosition().x*PTM_RATIO > winSize.width/2){
// do stuff....
}
如果您将米 (GetPosition) 与像素 (winSize) 进行比较,则此条件将不起作用,因此这是此转换有用的一个很好的示例。
或者,在您的情况下:
float pixel_width, pixel_height;
polygon_body.SetAsBox(pixel_width/PTM_RATIO, pixel_height/PTM_RATIO);