0

配列の中で特定のスプライトの動きを作るコーディングに苦労しています....

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{        
    UITouch* myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView: [myTouch view]];
    location = [[CCDirector sharedDirector]convertToGL:location];
    CCSprite*grade=[grades lastObject];
    [grade runAction:[CCMoveTo actionWithDuration:3 position:location]];

}

移動する配列の本当に最後のオブジェクト..

ccTouchesMove配列内の特定のスプライトに触れるようにコードを修正し、おそらくメソッドでそれを移動するのを手伝ってもらえますか。

PS私はbox2dではなく、cocos2dのみを使用しています。

4

1 に答える 1

0
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{        
    UITouch* myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView: [myTouch view]];
    location = [[CCDirector sharedDirector]convertToGL:location];

    for (CCSprite *grade in grades) {
        if (CGRectContainsPoint(grade.boundingBox, location)) {
            [grade runAction:[CCMoveTo actionWithDuration:3 position:location]];
        }
    }   

}

CGRectContainsPointタッチされた場所が指定された矩形内にあるかどうかを確認します。だから私がしたことは、スプライト配列を反復し、そのスプライトを移動するよりも、場所が長方形 (境界ボックス) 内にあるスプライトの場合です。if最初に触れたスプライトだけを移動したい場合は、ステートメント内にブレークを追加できます。

于 2012-06-18T08:46:08.320 に答える