繁体   English   中英

加载另一个视图时Box2D刚体变形

[英]Box2D Rigid Bodies Distorted When Loading Another View

我有一个很棒的Box2D世界。 我在一个简单的iOS游戏中使用它,当某个物体与另一个物体碰撞时,用户倾斜设备以将物体推向屏幕周围的机架,从而使各个点碰撞。

当它在我的应用程序中的测试控制器中深埋几层时,它运行良好。 我从菜单屏幕上的按钮调用了它,而游戏屏幕上的按钮将通过popToViewController返回菜单。 但是,一旦我看到它的效果如何,我就意识到我希望游戏成为用户看到的第一个屏幕(默认加载图像之后)。 因此,现在该应用程序可以加载整个世界,并且游戏可以立即进行,没有任何问题。

直到用户点击菜单按钮进入菜单屏幕-另一个视图控制器。 菜单控制器加载正常,一切正常。 但是,当人们点击“后退”按钮返回游戏/世界时,图像/实体会变形。 变形取决于菜单控制器被推到导航堆栈上时碰巧的旋转方式。 有时它们会增大,有时会变质。

在加载菜单控制器时,我确实尝试过暂停世界(通过不调用Step的方式),但这并没有解决图像失真问题。

这是加载菜单控制器的代码:

  //unhide the navbar for the next screen
   [self.navigationController setNavigationBarHidden:NO];

   MenuViewController *mvc = [[MenuViewController alloc]init];

   [self.navigationController pushViewController:mvc animated:YES];

   [mvc release];

这是游戏的视图控制器由应用程序didFinishLaunchingWithOptions中的应用程序委托加载的位置:

   B2DViewController *b2dvc = [[B2DViewController alloc]init];

   UINavigationController *navcon = [[UINavigationController alloc] init];

   [navcon setNavigationBarHidden:YES];

   [navcon pushViewController:b2dvc animated:NO];
   [window addSubview:navcon.view];

   [b2dvc release];

    [window makeKeyAndVisible];

图像通过xib进入。 一个是按钮,另一个是imageView。 两者都添加到动态主体中,动态主体的配置如下:

    b2PolygonShape dynamicBox;
    dynamicBox.SetAsBox(boxDimensions.x, boxDimensions.y);

 ...

    b2FixtureDef fixtureDef; 
    fixtureDef.shape = &dynamicBox;
    fixtureDef.density = 3.0f;
    fixtureDef.friction = 0.3f;
    fixtureDef.restitution = 0.5f;

  ...

我尝试隐藏所有子视图,但是,您可能会怀疑,这只是将它们从视图中隐藏起来,而不是从扭曲力中隐藏起来。 我还关闭了IB中所有拉伸和调整大小的内容,但无济于事(我只是在猜测)。

对于任何人可能提供的任何帮助或想法,我将不胜感激。

我没有将菜单控制器推到导航控制器上,而是将导航控制器添加到视图中,而是使用了presentModalViewController:animation。 这不能解决问题,但是一旦我注释掉[self.navigationController setNavigationBarHidden:NO]; 问题已解决。

//unhide the navbar for the next screen
//[self.navigationController setNavigationBarHidden:NO];

MenuViewController *mvc = [[MenuViewController alloc]init];

[self presentModalViewController:(UIViewController *)mvc  animated:YES];
[mvc release];

看来,导航栏是砸的图像? 我想进一步研究一下,因为导航栏可能很方便,但是我现在没有时间,这可能意味着我永远也不会解决它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM