我正在和一些朋友一起开发一个游戏项目。
我们开始使用 Xcode 5 for iOS 7.0 制作它。
游戏从第一次触球开始。我们的角色从天而降,你可以开始和他一起跳跃。
一切正常,直到我的朋友将项目压缩并发送给我。我打开它,并尝试在模拟器上运行。所有的场景都是在我朋友的机器上创建的,但是我点击了。游戏崩溃。
我得到的错误信息是:
断言失败:(面积 > 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 翻转并保存另一张图像。