CGRect相交没有两个图像碰撞

时间:2014-03-30 15:41:10

标签: ios objective-c

我现在有一个问题。我正在制作一个游戏。当两个imageViews碰撞时,游戏将结束。我正在使用CGRECTIntersects rect检测两个图像是否发生冲突。

问题在于,当我重新开始游戏时,碰撞会发生,而事实上两张图像实际上没有碰到过彼此?

我们非常感谢任何建议。 谢谢

- (void)collision {

if (CGRectIntersectsRect(object.frame, object2.frame)) {
    object.hidden=YES;
    object2.hidden=YES;
    retry.hidden=NO;
    [timer invalidate];
}

}

/ - (void)viewDidLoad {

retry.hidden=YES;


timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(object2) userInfo:nil repeats:YES];



objectSpeed1 = CGPointMake(3.0, 2.0);

[super viewDidLoad];

}

/ - (IBAction)重试:(id)发件人{

 [self performSegueWithIdentifier:@"restart" sender:sender];

}

- (void)object2 {

object2.center = CGPointMake(object2.center.x + object2.x, object2.center.y + objectspeed1.y);

if (object2.center.x > 310 || object2.center.x < 10) {
    objectspeed1.x = - objectspeed1.x;
}
if (object2.center.y > 558 || object2.center.y < 10) {
    objectspeed1.y = - objectspeed1.y;
}

1 个答案:

答案 0 :(得分:0)

在代码中考虑这种情况。您可以检查图像视图是在其起始位置还是从另一个位置到达此位置。它足以在viewcontroller的类上保留BOOL属性,如下所示:

// ViewController.m

@interface ViewController ()

@property (readonly) BOOL isStarted;

@end

@implementation

- (void)viewDidLoad {
    [super viewDidLoad];

    _isStarted = NO;

    // Make some preparations for app's needs

    _isStarted = YES;
}

@end

_isStarted是一个标志,显示viewcontroller是否已准备好处理数据。

if(_isStarted) {
    // Analyze image views' frame
}
else {
    // Do nothing
}