【问题标题】:how many bullets have been fired?发射了多少颗子弹?
【发布时间】:2013-01-22 20:51:33
【问题描述】:

我非常沮丧,我知道这只是因为我不知道我在用 cocos2d 做什么。我正在关注关于 cocos2d 的 Ray Wenderlich 教程,我正在尝试将它们放在一起。当点击屏幕时,会向点击的方向发射一颗子弹。我正在使用

- (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 次,然后调用重新加载方法。好吧,那没有用。所以我试着计算屏幕上的触摸,我想如果我有x次点击然后调用reload方法(还没有写)?问题是每次您按下屏幕的不同区域时,计数都会从 1 开始。有些人请帮助我完成这周长达一周的拔头发过程?如何计算我开枪的次数?

【问题讨论】:

    标签: iphone ios xcode cocos2d-iphone sprite


    【解决方案1】:

    难道你不能在你的视图控制器上创建一个属性,然后每次调用立即拍摄方法时,只需将 1 添加到你的属性,然后在调用 reload 方法时将其重置为 0?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-31
      • 2023-03-15
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      相关资源
      最近更新 更多