0

特定のスプライトを位置で検出しようとしましたが、「if」ステートメントを使用しているときにビルドに失敗しました。

ここに私のコードがあります

 -(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

UITouch* myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView: [myTouch view]];
location = [[CCDirector sharedDirector]convertToGL:location];

int numGrades = [grades count]; 
for (int i = 0; i < numGrades; i++) 
{
    // Put each spider at its designated position outside the screen 
    CCSprite* grade = [grades objectAtIndex:i];

int numGrades = [grades count]; 
for (int i = 0; i < numGrades; i++) 
{
    CCSprite* grade = [grades objectAtIndex:i];

// if ステートメントが機能しないようです... 私がやろうとしているのは、特定のスプライトに触れた場合.. 移動を停止する必要がありますが、停止しません。

    if ((grade.position.x==location.x) && (grade.position.y==location.y)) 
    {

        [grade stopAllAction];

    }
}
    }

 }

「if」ステートメントを修正してください...

4

1 に答える 1

0

スプライトのタッチを検出しようとしているだけのようです。現在の交差テストでは、タッチ座標がスプライトの中心点と正確に一致する必要がありますが、これは事実上不可能です..

代わりに、スプライトのバウンディング ボックスに対してタッチ座標をテストしてみてください。

if (CGRectContainsPoint(grade.boundingBox, location))     
{
    [grade stopAllActions];     
} 

「s」が付いた stopAllActions であることにも注意してください。

お役に立てれば。

于 2012-06-19T06:34:57.053 に答える