在cocos2d和花栗鼠中成长圈子

时间:2011-10-07 08:27:04

标签: objective-c cocos2d-iphone chipmunk

我正在尝试在花栗鼠中创建一个不断增长的圈子,当你触摸并将手指放在某个位置时,它会开始增长。我没有在花栗鼠中找到任何具体的帮助功能,想知道是否有人有任何建议,提示或技巧如何做到这一点。

一种方法是创建一个比前一个更大的圆圈,并在每个更新圆圈中销毁旧圆圈。也许有一种更简单的方式,任何人都有任何想法?

由于

更新: 目前我使用以下方法:

在我的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),所以我猜这个解决方案还可以。

1 个答案:

答案 0 :(得分:0)

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

您必须单独导入此标题,因为我通常不鼓励人们使用它。确保你明白,花栗鼠无法理解表面是如何移动或改变的,因此碰撞会变得糊涂。