Cocos2d Бурундук: сенсорные формы? - PullRequest
0 голосов
/ 25 февраля 2011

Сегодня у меня есть cocos2d вопрос!

У меня есть несколько фигур и space-manager , настроенный в моем .mфайл с помощью узлов:

- (CCNode*) createBlockAt:(cpVect)pt

                    width:(int)w
                   height:(int)h
                     mass:(int)mass
{
    cpShape *shape = [smgr addRectAt:pt mass:mass width:w height:h rotation:0];

    cpShapeNode *node = [cpShapeNode nodeWithShape:shape];
    node.color = ccc3(56+rand()%200, 56+rand()%200, 56+rand()%200);

    [self addChild:node];

    return node;
}

- (CCNode*) createCircleAt:(cpVect)pt
                     mass:(int)mass
                     radius:(int)radius
{
    cpShape *shape = [smgr addCircleAt:pt mass:mass radius:radius];
    cpShapeNode *node1 = [cpShapeNode nodeWithShape:shape];
    CCSprite *sprt = [CCSprite spriteWithFile:@"fire.png"];
    node1.color = ccc3(56+rand()%200, 56+rand()%200, 56+rand()%200);

    [self addChild:node1];

    return node1;
}

затем я на самом деле создаю фигуры, устанавливаю фон, выделяю и запускаю менеджер пространства в моем методе инициализации:

- (id) init
{
    [super init];

    CCSprite *background = [CCSprite spriteWithFile:@"BGP.png"];
    background.position = ccp(240,160);
    [self addChild:background]; 

    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:NO];

    //allocate our space manager
    smgr = [[SpaceManagerCocos2d alloc] init];
    smgr.constantDt = 1/55.0; 

    [smgr addWindowContainmentWithFriction:1.0 elasticity:1.0 inset:cpvzero];

    [self createBlockAt:cpv(160,50) width:50 height:100 mass:100];
    [self createBlockAt:cpv(320,50) width:50 height:100 mass:100];
    [self createBlockAt:cpv(240,110) width:210 height:20 mass:100];
    [self createCircleAt:cpv(240,140) mass:25 radius:20];

    [smgr start];

    return self;
}

Теперь я хочу, чтобы фигура была удалена, если к ней прикоснуться.Каков наилучший способ сделать это ??? Я надеюсь, что кто-то там может мне помочь:)

Редактировать: Plz кто-то, начните награду!Или я так и не получил ответа: (

-DD

1 Ответ

1 голос
/ 25 февраля 2011

Как насчет этого?

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
    CGPoint point = [self convertTouchToNodeSpace:touch];
    cpShape *shape = [smgr getShapeAt:point];
    if (shape) {
        [self removeChild:shape->data cleanup:YES];
        [smgr removeAndFreeShape:shape];
    }
    return YES;
}
...