0

所以我正在用一个可以射击的角色制作一个简单的游戏,除了角色转动子弹反转方向之外,射击工作正常。我理解为什么会发生这种情况,所以我的问题是,有没有办法可以从阵列中移除子弹,同时保持其当前速度,从而忽略角色的方向?

-(void)spinTapped
{

        CCSprite *bullet = [CCSprite spriteWithFile:@"rwby_bullet.png"];
        bullet.position = ccp(self.character.position.x , self.character.position.y+25);
        [bullets addObject:bullet];
        [self addChild:bullet z:-1];


}

然后在更新中:

if(isRight) bulletVelocity = 10;
    else if(isLeft) bulletVelocity = -10;

    for(CCSprite *bullet in bullets)
    {
        bullet.position = ccp(bullet.position.x + bulletVelocity + scrollVelocity, bullet.position.y);
    }
4

1 回答 1

0

创建每个项目符号时,设置一个标签。将其设置为 10 用于面向右侧,将其设置为 -10 用于左侧,然后只需添加速度值的标签。-(void)spinTapped {

    CCSprite *bullet = [CCSprite spriteWithFile:@"rwby_bullet.png"];
    bullet.position = ccp(self.character.position.x , self.character.position.y+25);
    if (isRight) {
       bullet.tag = 10;
    }
    else {
       bullet.tag = -10;
    }
    [bullets addObject:bullet];
    [self addChild:bullet z:-1];

}

NSMutableArray *deleteArray = [NSMutableArray alloc] init];

for(CCSprite *bullet in bullets)
{
    bullet.position = ccp(bullet.position.x + bullet.tag + scrollVelocity, bullet.position.y);
    if (*bullet is off screen*) {
        [deleteArray addObject:bullet];
    }
}

for (CCSprite *bullet in deleteArray)
{
    [bullets removeObject:bullet];
}
于 2013-09-21T19:43:28.930 回答