简体   繁体   中英

CGRectsIntersects without two images colliding

I have an issue at the moment. I am making a game. When two imageViews collide the game will end. I am using CGRECTIntersects rect to detect if the two images collide.

The issue is that when i restart the game the collision will happen when in fact the two images have not actually touched one another?

Any suggestions would be much appreciated. Thank you

-(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)retry:(id)sender {

 [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;
}

Just consider this case on the code. You can check if image views are on their start position or they came to this position from another. It's enough to keep BOOL property on viewcontroller's class like this:

// 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 is a flag which shows whether viewcontroller is ready to handle the data.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM