约束一个touchesmoved对象与墙壁碰撞?

时间:2010-05-22 22:11:48

标签: objective-c collision touchesmoved

我正在尝试创建一个非常简单的游戏,您可以拖动一个简单的imageView。事情是框架中只有一个墙(只是一个矩形),图像不应该在那里。所以我做了这样的事情:

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
 UITouch *touch = [[event allTouches] anyObject];
 if ([touch view] == myImage) {
  if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))
  {
   myImage.center = [touch locationInView:self.view];
  }
 }
}

但问题是图像确实超出了界限,然后卡在那里,触摸移动结束。

所以我添加了这个:

    else if (CGRectIntersectsRect (CGRectMake(801, 0, 223, 768), [myImage frame])) {
   CGPoint touchedPoint = [touch locationInView:self.view];
   myImage.center = CGPointMake(730, touchedPoint.y); 

  }

但这使得图像在与“墙”相交时开始闪烁,最终也卡在那里。

我觉得必须有一个简单的方法来做到这一点。有人可以开导我吗?

1 个答案:

答案 0 :(得分:0)

确定发现了我的错误..

我必须这样做:

if (CGRectContainsPoint (CGRectMake(0, 0, 800, 768), [touch locationInView:self.view]))

而不是:

if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))

你们,很傻。