【问题标题】:Sprites offset from box2D bodies on retina display device精灵从视网膜显示设备上的 box2D 身体偏移
【发布时间】:2011-09-12 08:38:12
【问题描述】:

我正在使用 cocos2d 和 box2d 制作我的第一个游戏,并且发现了一些非常奇怪的东西。我有多个 box2D 物体飞来飞去,当我打开调试绘图时,我看到在我的视网膜显示设备上,box2d 物体的位置就像在 480x320 设备上一样,即在屏幕的左下象限,但精灵是在正确的位置。

例如,一个应该位于 (720,320) 的主体将使其 sprite 位于此位置,并且其 box2D 主体绘制在 (360,160)。

交互正在发生,只是抵消,所以一切正常......

当我在运行 480x320 显示器的设备上测试游戏时,一切都正确排列。显然在从非视网膜显示设备到视网膜显示设备的转换中我缺少一些东西,但我似乎无法工作出来吧。

产生主体的示例方法是:

-(void)addArrow{

    CGSize winSize = [CCDirector sharedDirector].winSize;
    arrow = [CCSprite spriteWithFile:[gameSettings objectAtIndex:0]];
    arrow.position = ccp(bowBar.position.x,bowBar.position.y);
    arrow.tag = 1;


    // Create ball body 
    b2BodyDef arrowBodyDef;
    arrowBodyDef.type = b2_dynamicBody;
    arrowBodyDef.position.Set(arrowPoint.x/PTM_RATIO, arrowPoint.y/PTM_RATIO);
    arrowBodyDef.userData = arrow;
    b2Body * arrowBody = world->CreateBody(&arrowBodyDef);
    arrowBody->SetTransform(arrowBody->GetPosition(),-  CC_DEGREES_TO_RADIANS(bowBar.rotation));
    b2PolygonShape rectangle;
    rectangle.SetAsBox(arrow.contentSize.width/PTM_RATIO/2,    arrow.contentSize.height/PTM_RATIO/2);


    b2FixtureDef rectangleShapeDef;
    rectangleShapeDef.shape = &rectangle;
    rectangleShapeDef.density = 150.0f;
    rectangleShapeDef.friction = 1.0f;
    rectangleShapeDef.restitution = 0.0f;
    arrowFixture = arrowBody->CreateFixture(&rectangleShapeDef);

    [self addChild:arrow z:15]



}

【问题讨论】:

    标签: cocoa-touch cocos2d-iphone box2d


    【解决方案1】:

    另外请注意,您可能必须更改使用 PTM_RATIO 宏的位置以包含 CC_CONTENT_SCALE_FACTOR()。 像这样的:

     b2Vec2(point.x / PTM_RATIO, point.y / PTM_RATIO)
    

    可能需要移到这里:

    b2Vec2(pixel.x / PTM_RATIO * CC_CONTENT_SCALE_FACTOR(), pixel.y / PTM_RATIO * CC_CONTENT_SCALE_FACTOR())
    

    【讨论】:

      【解决方案2】:

      这只是错误的调试绘制。你可以这样排列:

       glPushMatrix();
       glScalef(CC_CONTENT_SCALE_FACTOR(), CC_CONTENT_SCALE_FACTOR(), 1);
       world->DrawDebugData();
       glPopMatrix();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-13
        • 2013-04-27
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多