Objective c 限制触摸移动的对象不与墙碰撞?
我试图创建一个非常简单的游戏,你可以拖动一个简单的图像视图。问题是,框架中有一面墙,只是一个矩形,图像不应该出现在上面。所以我做了这样的事情:Objective c 限制触摸移动的对象不与墙碰撞?,objective-c,collision,touchesmoved,Objective C,Collision,Touchesmoved,我试图创建一个非常简单的游戏,你可以拖动一个简单的图像视图。问题是,框架中有一面墙,只是一个矩形,图像不应该出现在上面。所以我做了这样的事情: - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; if ([touch view] == myImage) { if (CGRectContainsRect
- (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);
}
但这使得图像在与墙相交时开始闪烁,最终也卡在了墙上
我觉得必须有一个简单的方法来做到这一点。谁能给我点化一下吗?好的,我发现了我的错误
我必须这样做:
if (CGRectContainsPoint (CGRectMake(0, 0, 800, 768), [touch locationInView:self.view]))
与此相反:
if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame]))
是啊,真傻