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