0

私は非常にイライラしていて、それは私がcocos2dで何をしているのかわからないからだと知っています。私はcocos2dのRayWenderlichチュートリアルに従っており、すべてをまとめようとしています。画面をタップすると、タップした方向に1発の弾丸が発射されます。使ってます

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
    [self.officer shootToward:touchLocation];
    [self.officer shootNow];
}

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
    [self.officer shootToward:touchLocation];
    [self.officer shootNow];
}

私の役員クラスでこれらのメソッドを呼び出します

- (void)shootNow {
    // 1
    CGFloat angle = ccpToAngle(_shootVector);
    _gun.rotation = (-1 * CC_RADIANS_TO_DEGREES(angle)) + 90;

    // 2
    CGSize winSize = [[CCDirector sharedDirector] winSize];
    float mapMax = MAX(winSize.width, winSize.height);
    CGPoint actualVector = ccpMult(_shootVector, mapMax);

    // 3
    float POINTS_PER_SECOND = 300;
    float duration = mapMax / POINTS_PER_SECOND;

    // 5
    for(id item in self.children) {
    NSString *bulletName = [NSString stringWithFormat:@"bullet.png"];
    CCSprite * bullet = [CCSprite spriteWithSpriteFrameName:bulletName];
    //bullet.tag = _type;
    bullet.position = ccpAdd(self.position, ccpMult(_shootVector, _gun.contentSize.height));
    CCMoveBy * move = [CCMoveBy actionWithDuration:duration position:actualVector];
    CCCallBlockN * call = [CCCallBlockN actionWithBlock:^(CCNode *node) {
        [node removeFromParentAndCleanup:YES];
    }];
    [bullet runAction:[CCSequence actions:move, call, nil]];
    [self.batchNode addChild:bullet];

        //[self addChild:bullet];
        [_shotsFired addObject:bullet];
    }
}

したがって、forループが5番目のステップをx回実行してから、reloadメソッドを呼び出すのは簡単だと思いました。まあそれはうまくいきませんでした。だから私は画面上のタッチを数えようとしました、私は私がx回のタップを取得したかどうかを考え、それからリロードメソッド(まだ書かれていません)を呼び出しますか?それに関する問題は、画面の別の領域を押すたびに、カウントが最初からやり直されることでした。今週の長い髪の毛を抜くプロセスを手伝ってくれませんか?銃を撃った回数を数えるにはどうすればよいですか?

4

1 に答える 1

2

ビューコントローラでプロパティを作成し、shoot nowメソッドが呼び出されるたびに、プロパティに1を追加し、reloadメソッドを呼び出すときに0にリセットすることはできませんか?

于 2013-01-22T20:57:42.443 に答える