2011-10-07 57 views
0

我正试图在花栗鼠中创造一个不断增长的圈子,当你在一个位置触摸并握住你的手指时,它开始增长。我还没有找到任何具体的帮助花栗鼠的功能,想知道如果任何人有任何建议,提示或技巧如何做到这一点。cocos2d和花栗鼠越来越多的圈子

一种方法是创建一个比前一个更大的圆,然后摧毁每个更新圆的旧圆。也许有一种更简单的方法,任何人有任何想法?

感谢

UPDATE: 在使用下面的方法我的那一刻:

在我actionLayer类:

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event 
{ 
    CGPoint touchLocation = [touch locationInView: [touch view]]; 
    CGPoint circleOrigin = [[CCDirector sharedDirector] convertToGL: touchLocation]; 

    spriteObject = [[[CPHatchimal alloc] initWithSpace:space atLocation:circleOrigin] autorelease]; 
    [sceneSpriteBatchNode addChild:spriteObject z:2]; 

    return YES; 
} 

-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event 
{ 
    [spriteObject setGrowCircle:NO]; 
} 

在我的 “spriteObject” 类:

-(void) update:(ccTime)deltaTime { 
    if (growCircle) { 
     CGPoint location = ccp(circleOrigin.x, circleOrigin.y); 
     cpFloat r = ((cpCircleShape*) shape)->r; 
     r++; 

     NSString *spritName = [self getCurrentSpriteName]; 
     [self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] 
          spriteFrameByName:spritName]]; 

     [self setScale:(0.01 * r)]; 

     cpSpaceRemoveStaticShape(space, shape); 
     cpShapeFree(shape); 


     body = cpBodyNewStatic(); 
     body->p = location; 

     shape = cpCircleShapeNew(body, radius, cpvzero); 
     shape->e = e; 
     shape->u = u; 
     shape->collision_type = collisionType; 
     shape->data = self; 

     cpSpaceAddStaticShape(space, shape); 

    } 
} 

目前我有很好的fps(约60),所以我顾ESS该解决方案是确定..

+1

你的方式会在CPU上超载。但是,您可以使用通常的圆形精灵,并在触摸时将其缩放。 现在,问题是你想要扩展多少? – gixdev

回答

0

https://github.com/slembcke/Chipmunk-Physics/blob/master/include/chipmunk/chipmunk_unsafe.h

你必须分别导入这个头,我通常不鼓励人们使用它。确保你明白Chipmunk无法理解表面如何移动或变化,并且碰撞会因此而变得糊涂。

+0

感谢您的回复Slembcke!我只是尝试了你的解决方案,但是身体的边缘并没有与形状一起缩放,这意味着接触点将会关闭。我正在回归我的原始解决方案,性能损失并没有那么糟糕。 –