Objective c 接触其他物体的物体

Objective c 接触其他物体的物体,objective-c,xcode,object,draggable,Objective C,Xcode,Object,Draggable,如果有人能告诉我如何判断两个物体是否接触过(一个图像或一个按钮),我会非常高兴。我知道如何使它们可以拖动,但不知道如何判断它们是否接触过,以及在它们接触时做些什么 谢谢 如果从不旋转对象,可以使用CoreGraphics函数 BOOL objectsTouch = CGRectIntersectsRect(object1.frame, object2.frame); 这当然需要两个对象位于同一个superview中。否则,您必须使用NSView的函数变换帧。经典方法是计算包含每个对象的最小圆,

如果有人能告诉我如何判断两个物体是否接触过(一个图像或一个按钮),我会非常高兴。我知道如何使它们可以拖动,但不知道如何判断它们是否接触过,以及在它们接触时做些什么


谢谢

如果从不旋转对象,可以使用CoreGraphics函数

BOOL objectsTouch = CGRectIntersectsRect(object1.frame, object2.frame);

这当然需要两个对象位于同一个superview中。否则,您必须使用NSView的函数变换帧。

经典方法是计算包含每个对象的最小圆,然后计算圆心之间的距离(毕达哥拉斯定理),并查看它是否小于R(object1圆)+R(object2圆)。如果小于此值,则必须使用位映射或其他方案,但如果大于此值,则可以假定对象不接触。

检查每个视图的坐标/帧,看看它们是否重叠或相同+1,这可能是最有效的方法。应该不用说,但这是比较帧矩形,所以如果您的图像是圆形或其他东西,您可能会得到意外(但正确)的结果。