0

このように2つの画像を生成します

- (void)moveImage:(UIImageView *)image duration:(NSTimeInterval)duration
            curve:(int)curve x:(CGFloat)x y:(CGFloat)y
{
    // Setup the animation
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:duration];
    [UIView setAnimationCurve:curve];
    [UIView setAnimationBeginsFromCurrentState:YES];

    // The transform matrix
    CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y);
    image.transform = transform;

    // Commit the changes
    [UIView commitAnimations];

}
    - (void)alien {
    enemy =
    [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"alien.png"]];
    enemy.frame = CGRectMake(-100, 20, 50, 50);
    [self.view addSubview:enemy];

    // Move the image
    [self moveImage:enemy duration:5
              curve:UIViewAnimationCurveLinear x:460 y:0.0];  }
- (void)bullet4 {
    bullet =
    [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Bullet.png"]];
    bullet.frame = CGRectMake(carDude.center.x, 380, 5, 10);
    [self.view addSubview:bullet];

    // Move the image
    [self moveImage:bullet duration:3
              curve:UIViewAnimationCurveLinear x:0 y:-500.0];   }

それらが交差するときにそれらを隠そうとしています。同時に画面にたくさん表示されることもありますが、試してみましたが、

-(void)checkCollision {
    if(CGRectIntersectsRect(bullet.frame, enemy.frame)) {

    }
}

そして、画像が衝突したときに画像に何かをさせる運はありません。

画像を非表示にして衝突を確認するにはどうすればよいですか?

4

1 に答える 1

2

ビューの変換を変更しても、そのフレームは変更されないため(無効になることもあります)、無視する必要があります。

ドキュメントから:

警告このプロパティがID変換でない場合、frameプロパティの値は未定義であるため、無視する必要があります。

平行移動変換を適用するだけなので、代わりにフレームをアニメートしてみませんか?

于 2012-09-09T15:46:30.383 に答える