4

リボルバー、ライフル、ショットガンなどの銃を持つゲームを開発しています。銃を選択し、画面に表示されるエイリアンを撃ちます。ほぼ完了ですが、機関銃などの自動射撃銃でエイリアンを撃つことに問題があります。シングル ショット ガンの場合、これを使用してエイリアンが照準を合わせていることを検出し、エイリアンが照準を合わせている場合は非表示にします。

CGPoint pos1 = enemyufoR.center;
if ((pos1.x > 254) && (pos1.x < 344) && (pos1.y > 130) && (pos1.y < 165 && _ammoCount != 0))
{
    enemyufoR.hidden = YES;
    [dangerBar setProgress:dangerBar.progress-0.10];
    _killCount = _killCount+3;
    [killCountField setText: [NSString stringWithFormat:@"%d", _killCount]];

    timer = [NSTimer scheduledTimerWithTimeInterval: 4.0
                                             target: self
                                           selector: @selector(showrUfo)
                                           userInfo: nil
                                            repeats: NO];
}

これはほとんどの銃で問題なく機能しますが、機関銃の場合、銃の発砲中に敵の位置を継続的にチェックする必要があります。どうすればいいですか?

4

2 に答える 2

1

ええと、あなたがあなたのシュートボタンをタップするとき、あなたは明らかに次のようなものを呼んでいます:

// --------------------------------------
// PSEUDO-CODE
// --------------------------------------
-(void)shootButtonPressed
{
    [self checkEnemies];
}

それから、BOOL変数を宣言し、それを使用して、指がまだ次のように押されているかどうかを確認してみませんか。

// --------------------------------------
// PSEUDO-CODE
// --------------------------------------

@interface MyGameClass
{
    // defaults to FALSE
    BOOL isTouching;
}

-(void)shootButtonPressed
{
    // assumes isTouching is a instance variable declared somewhere
    isTouching = YES;
    [self checkEnemies];
}

-(void)checkEnemies
{
    // check enemy action

    // ---------------------------------------------
    // when finger lifts off the screen, this 
    // isTouching variable will be reset to FALSE
    // so as long as isTouching is TRUE, we call
    // this same method checkEnemies again
    // ---------------------------------------------
    if(isTouching)
    {
        [self checkEnemies];
    }
}

// reset the isTouching variable when user finger is taken off the screen
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    isTouching = NO;   
}
于 2012-10-26T07:56:00.297 に答える
1

UITouch からタイムスタンプを確認する

于 2012-10-26T05:28:19.257 に答える