在CCPhysicsNode上启用调试绘制会导致崩溃

时间:2016-03-15 06:14:40

标签: ios iphone cocos2d-iphone physics spritebuilder

版本:Cocos2D V3.4,Xcode 7.2.1,SpriteBuilder 1.4.9。

您可以下载我的项目here。它是用SpriteBuilder创建的。

在CCPhysicsNode上启用调试绘制会导致崩溃:

CCPhysicsNode *_physicsWorld;


_physicsWorld = [CCPhysicsNode node];
_physicsWorld.gravity = ccp(0,0);
_physicsWorld.debugDraw = YES;//if debugDraw set to NO, crash will not occur, it happens only when its set to YES
_physicsWorld.collisionDelegate = self;
[_scene addChild:_physicsWorld];

错误:

  

断言失败 - [CCRenderStateGL   initWithBlendMode:着色器:shaderUniforms:copyUniforms:]

我将物理主体添加到CCSprite的代码:

  _PlayerSprite.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){CGPointZero, _PlayerSprite.contentSize} cornerRadius:0]; // 1 

  _PlayerSprite.physicsBody.collisionGroup = @"playerGroup"; // 2

  [_PhysicsWorld addChild:lobjPlayerSprite
                        z:Z_ORDER_PLAYERS];

然后代码在CCRendererBasicTypes initWithBlendMode处崩溃:

-(instancetype)initWithBlendMode:(CCBlendMode *)blendMode shader:(CCShader *)shader shaderUniforms:(NSDictionary *)shaderUniforms copyUniforms:(BOOL)copyUniforms

crashes here:-
NSAssert(shader, @"CCRenderState: Shader is nil");

1 个答案:

答案 0 :(得分:1)

您的项目是使用自2015年4月以来未更新的SpriteBuilder创建的.SpriteBuilder附带的Cocos2D版本在Xcode 7之前发布,并且不包含针对Xcode 7和iOS 9的一些必要修复。您可以阅读更多关于这个here

要解决此问题,您需要手动更新Cocos2D。按照上一个链接中的步骤操作,或使用this作为参考(更直观)。