2011-10-07 28 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!我只是嘗試了你的解決方案,但是身體的邊緣並沒有與形狀一起縮放,這意味着接觸點將會關閉。我正在迴歸我的原始解決方案,性能損失並沒有那麼糟糕。 –