在Cocos2d中使用physicsBody正确地动画和移动精灵



看来我的角色似乎像预期的那样使用ccananimation和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];

只需移动

[mainChar setFrame]行在physicsBody之上,它工作得很好。新手错误^^

最新更新