关于我的碰撞检测

时间:2014-04-04 14:43:41

标签: ios

首先,这是我的代码..

-(IBAction)handlePan : (UIPanGestureRecognizer *) recognizer

{ CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                     recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0,0) inView:self.view];

[self checkCollison];

}

-(void) checkCollison
{

if (CGRectIntersectsRect(Dot.frame, CollisionImage.frame))

{

    AudioServicesPlaySystemSound(playSoundId);
}


}

- (void)viewDidLoad
{

NSURL *SoundURL = [ NSURL fileURLWithPath:[[NSBundle mainBundle]            pathForResource:@"beep"ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)SoundURL, & playSoundId);

[super viewDidLoad];
// Do any additional setup after loading the view.

}

我一直试图为EVER做的是让Dot.center在碰撞时停止..我不希望屏幕翻转或提醒显示或图像解剖或所有人们到处显示的那些。我得到那个......我想要的只是我的形象充当墙壁......就像一个迷宫我只想让Dot停止通过另一个图像然后停在那里......不要停止游戏..我想要一个墙,但它似乎很难做,因为我找不到合适的答案任何地方..当图像碰撞时,所有人都建议是发生的事情..请帮助lol

1 个答案:

答案 0 :(得分:1)

目前,您正在根据手势识别器移动视图,然后检查是否发生了碰撞。您需要添加某种反馈机制,以便在发生碰撞时不允许更改位置。

让我们假设您希望用户将手指放在屏幕上以使点在碰撞后保持移动,它只是无法通过边界。

我做的事情如下:

  • 更改检查冲突方法以返回BOOL - 如果发生冲突,则为YES。你可能不想从这里拨打嘟嘟声,因为它可能经常发生。
  • 在手势识别方法的开头保存视图中心
  • 尝试做动作
  • 如果发生碰撞,请再次将位置设置回来,并在x轴上进行尝试。如果没有发生碰撞,请保留。如果发生碰撞,请在y轴上尝试。如果没有发生碰撞,请将其保留。
  • 如果发生任何碰撞,请发出哔哔声
例如,这应该允许您敲击左侧的墙壁,但通过移动手指继续向上滑动。