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

标签 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];

错误:

Assertion failure in -[CCRenderStateGL initWithBlendMode:shader: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");

最佳答案

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

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

关于ios - 在 CCPhysicsNode 上启用调试绘制会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36003912/

相关文章:

iphone - 创建具有透明背景色的图层

ios - 元素在 CCNode 中的定位

ios - 在哪里从包中复制只读数据文件?

iphone - 一周后根据第一个字段中输入的日期自动显示第二个字段中的日期

ios - 将 INT 值从一个场景传递到另一个场景

iphone - UILabel:调整边距以匹配 UITextView

iphone - UIGestureRecognizers 的自定义操作(带有自定义参数)

ios - 旋转和导航后状态栏隐藏

iOS - 如何在 UIAlertController swift 中的新行中添加操作

ios - 无法解析 "Ambiguous use of subscript"