我现在有一个问题。我正在制作一个游戏。当两个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;
}
答案 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
}