Iphone 迷宫游戏中的墙

Iphone 迷宫游戏中的墙,iphone,ios,objective-c,intersection,Iphone,Ios,Objective C,Intersection,我有两个图像:一个大理石和一个障碍物。 我想确保弹珠不能越过障碍物。 如果弹珠接触到障碍物的边缘,则应将其设置为先前的坐标,以便看起来弹珠停止在障碍物的边缘。 代码是什么? 我的代码: 有人能告诉我这样做的原理吗 谢谢你,马蒂斯 您可以像这样保存大理石的上一个位置: CGRect previousPosition = marbleFrame.frame; 在下一次迭代中,如果大理石与墙碰撞,则将其边框设置为该值 另一种解决方案是检查哪一侧发生碰撞(顶部、左侧、右侧或下方),这很容易比较交叉点矩

我有两个图像:一个大理石和一个障碍物。 我想确保弹珠不能越过障碍物。 如果弹珠接触到障碍物的边缘,则应将其设置为先前的坐标,以便看起来弹珠停止在障碍物的边缘。 代码是什么? 我的代码:

有人能告诉我这样做的原理吗

谢谢你,马蒂斯


您可以像这样保存大理石的上一个位置:

CGRect previousPosition = marbleFrame.frame;
在下一次迭代中,如果大理石与墙碰撞,则将其边框设置为该值

另一种解决方案是检查哪一侧发生碰撞(顶部、左侧、右侧或下方),这很容易比较交叉点矩形(例如,如果交叉点矩形顶部大于其右侧,则意味着是从顶部或底部碰撞),并在进入之前将大理石框放在其旁边


或者,您也可以在iOS7中使用令人敬畏的SpriteKit,这样做非常简单,但仅适用于iOS7设备。

首先,要正确使用碰撞检测并非易事,因此您可能需要查看一些外部库,如ObjectiveChipmunk或Box2d

话虽如此,您可以在else语句中添加一些内容。一般的方法是“把物体移回去”,这取决于他碰到的边界。如果他与左边界相撞,将他向右移动x个单位;如果他撞到上边界,将他向下移动x个单位,以此类推


另一种可能的解决方案是跟踪对象的“有效”位置,一旦对象与墙碰撞,将对象返回到其先前的位置

如果您想展望iOS 7的开发,可以使用SpriteKit框架来利用新的物理包。但是,将只适用于iOS 7+。Thx为您的答案这帮助了我!我知道SpriteKit会容易得多,但我必须等到IOS 7发布后才能上传我的程序,这是不可能的这是非常令人沮丧的,我只能投票时,我有15经验,请你给我的帖子评分,这样我就可以给你的答案评分=D
CGRect previousPosition = marbleFrame.frame;