您当前的位置: 首页 >  ui

SpriteBuilder改变布局后App运行出错代码排查

发布时间:2015-10-29 11:00:43 ,浏览量:0

原来整个关卡场景放在GameScene.ccb中,后来觉得移到专门的Level.ccb比较好.

移动过后编译运行,只要移动Player的胳膊发射子弹时,Xcode报错:

g due to Chipmunk error: Body's angular velocity is invalid.
    Failed condition: body->w == body->w && cpfabs(body->w) != INFINITY
    Source:/Users/pp/src/xcode/ios_src/ShootBall.spritebuilder/Source/libs/cocos2d-iphone/external/Chipmunk/src/cpBody.c:123

检查后发现错误发生在touch事件中,但从错误信息较难推测实际原因.遂从反向推测原因.

移动布局后,原来的物理对象已经不再GameScene.ccb中,原来的引用还在吗?在GameScene加载方法中添加如下断言:

NSAssert(_physicWorld, @"physicWorld must not nil");

编译执行App后果然报错!在查找需要引用该物理对象的代码,在子弹初始化中有这么一句:

[_physicWorld addChild:bullet];

由此可见子弹对象没有正确添加到物理对象中去,导致错误的发生.知道原因解决也就简单了,添加查找物理对象的代码即可:

_physicWorld = (CCPhysicsNode*)[self getChildByName:@"physicWorld" recursively:YES];
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0496s