[英]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.