【问题标题】:CCAnimation and moving Sprite in Cocos2d Properly with physicsBody?Cocos2d 中的 CCAnimation 和移动 Sprite 正确使用physicsBody?
【发布时间】:2014-06-18 02:53:08
【问题描述】:

使用 CCAnimation 和 Cocoa2d 3.x,我的角色似乎可以按预期制作动画。问题是当我将 CCAnimatedSprite 设置为具有physicsBody 时,就像我之前的 CCSprite 所做的那样,我遇到了崩溃

Aborting due to Chipmunk error: Body's moment is NaN.
    Failed condition: body->i == body->i && body->i_inv == body->i_inv
    Source:/Users/Jason/Desktop/RPGGame/RPG/Libraries/Chipmunk/chipmunk/src/cpBody.c:114

但是,如果我删除这一行:

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

崩溃消失了,但物理没有应用到我的 CCAnimatedSprite,我该如何解决这个问题,为什么这条线会导致它?

初始化我的 CCAnimatedSprite 的完整代码:

 CCTiledMapObjectGroup *objects0  =    [levelOneMap objectGroupNamed:@"mainChar"];
    NSMutableDictionary *startPoint0 =    [objects0 objectNamed:@"startPosition"];
    int x0 = [[startPoint0 valueForKey:@"x"] intValue];
    int y0 = [[startPoint0 valueForKey:@"y"] intValue];
    self.mainChar     = [CCAnimatedSprite animatedSpriteWithPlist:@"AnimateChar.plist"];
    mainChar.position = ccp(x0,y0);
    mainChar.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){CGPointZero, mainChar.contentSize} cornerRadius:0];
    mainChar.physicsBody.collisionGroup = @"groupPlayer";
    mainChar.physicsBody.collisionType = @"collisionPlayer";
    [mainChar addAnimationwithDelayBetweenFrames:0.1f name:@"AnimateChar"];
    [mainChar setFrame:@"AnimateChar-1.png"];

    [self.physicsWorldNode addChild: mainChar];

【问题讨论】:

  • 好久没看Cocos2d了,但是(CGRect){CGPointZero, mainChar.contentSize}NSLog out是什么?我猜可能那时 contentSize 是 0,0?

标签: ios objective-c cocos2d-iphone cocos2d-iphone-3


【解决方案1】:

只需移动即可修复它

physicsBody 上方的[mainChar setFrame] 行,它运行良好。菜鸟错误^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多