繁体   English   中英

将iOS更新到7.1后,Sprite-kit游戏崩溃

[英]Sprite-kit game crashes after update iOS to 7.1

我正在和一些朋友一起开发游戏项目。

我们开始使用iOS 7.0的Xcode 5进行制作。

游戏从第一次触摸开始。 我们的角色从天而降,您可以开始和他一起跳跃。

一切正常,直到我的朋友将项目压缩并发送给我。 我打开它,并尝试在模拟器上运行。 就像在朋友的机器上一样,所有场景都已创建,但是我点击了。 游戏崩溃。

我收到的错误消息是:

断言失败:(区域> 1.19209290e-7F),函数ComputeMass,文件/SourceCache/PhysicsKit_Sim/PhysicsKit-6.5.4/PhysicsKit/Box2D/Collision/Shapes/b2PolygonShape.cpp,行395。

因此,我查看了不同之处,并意识到我在iOS 7.1上运行它,将其更改为7.0,一切再次恢复正常。

但是,现在我有一个不能在7.1上玩的游戏。 我才刚刚开始学习sprite-kit,所以...我不知道该怎么做才能更改它。

UITouch *t = [touches anyObject];

int forca = [t locationInView:self.view].y;

[self.player pular:abs( ((forca/40) -8)*15 )];

[self.physicsWorld removeAllJoints];
self.jogoAtivo = TRUE;
self.player.personagem.physicsBody.dynamic = YES; //<-Acuses to be the error
[[self floor] setMovingEnable];

在主线程中, [PKPhysicsBody setDynamic:]:

PhysicsKit`-[PKPhysicsBody setDynamic:]:
0x9533e7e:  pushl  %ebp
0x9533e7f:  movl   %esp, %ebp
0x9533e81:  pushl  %esi
0x9533e82:  subl   $0x14, %esp
0x9533e85:  calll  0x9533e8a                 ; -[PKPhysicsBody setDynamic:] + 12
0x9533e8a:  popl   %ecx
0x9533e8b:  movl   0x8(%ebp), %eax
0x9533e8e:  cmpb   $0x0, 0x10(%ebp)
0x9533e92:  je     0x9533ea9                 ; -[PKPhysicsBody setDynamic:] + 43
0x9533e94:  movl   0x4316e(%ecx), %edx
0x9533e9a:  movl   (%eax,%edx), %edx
0x9533e9d:  movl   0x4316a(%ecx), %esi
0x9533ea3:  movl   %edx, 0x10(%esi,%eax)
0x9533ea7:  jmp    0x9533eb7                 ; -[PKPhysicsBody setDynamic:] + 57
0x9533ea9:  movl   0x4316a(%ecx), %edx
0x9533eaf:  movl   $0x0, 0x10(%edx,%eax)
0x9533eb7:  movl   0x43172(%ecx), %edx
0x9533ebd:  movl   (%eax,%edx), %edx
0x9533ec0:  testl  %edx, %edx
0x9533ec2:  je     0x9533eda                 ; -[PKPhysicsBody setDynamic:] + 92
0x9533ec4:  movl   0x4316a(%ecx), %ecx
0x9533eca:  movl   0x10(%ecx,%eax), %eax
0x9533ece:  movl   %eax, 0x4(%esp)
0x9533ed2:  movl   %edx, (%esp)
0x9533ed5:  calll  0x954a2b4                 ; b2Body::SetType(b2BodyType)
0x9533eda:  addl   $0x14, %esp      // Green Line "Thread 1:signal SIGABRT
0x9533edd:  popl   %esi
0x9533ede:  popl   %ebp
0x9533edf:  ret    

编辑:

因此,通过@ LearnCocos2D关于该区域的注释,我再次查看了我的代码。

当我初始化角色时,我使用:

self.personagem.xScale = -self.personagem.xScale;

水平翻转我的角色精灵。

我将其取下,现在我的代码可以工作了。

我假设翻转精灵的负数引起与质量计算的冲突。

我的解决方法:翻转并使用Photoshop保存另一张图像。

(area > 1.19209290e-7F), function ComputeMass

这似乎表明多边形的面积太大。 我的猜测是,发生这种情况的原因是多边形具有顺时针方向的顶点缠绕,甚至可能不是凸的。

验证所有多边形实体(即使用自定义CGPath创建的多边形实体)均使用适当的形状。 形状的点必须逆时针缠绕,并且多边形本身必须是凸形的。

另外,我相信多边形的最大限制为12点,但是如果超出该限制,则可能会在其他地方断言。

暂无
暂无

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

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