2013-03-04 36 views
0

我很难搞清楚具有可拖动对象的多个边界的对象。 HitTest不起作用,因为当快速拖动时,HitTest触发前对象会重叠。我想知道是否有一种更有效的方法来确定这种互动。使用复杂对象进行可拖动对象碰撞检测的最佳方法

我将尝试存储每个矩形x,y,宽度,高度,然后遍历这些矩形,以确定对象是否已触及并停止播放器在该方向上可拖动。

Here's the example as a drawing.

+0

如果你只需要在一个标准的'DisplayList'上碰撞,那么绝对没有必要使用Box2D,顺便说一下,它也是一个物理引擎,它也内置了碰撞检测。如果你只想测试碰撞这些对象的边界可以使用'draggable.bounds.intersects(blueStuff.bounds)'。 – Gio 2013-03-05 06:56:52

+0

感谢Gio,但是我怎样才能看到它与哪个网站相交呢? – Tom 2013-03-05 16:53:14

+0

我会有一个'Vector'或'Array'这些可交叉的站点,并在'Event.ENTER_FRAME'处理程序的'for'循环中检查它们,它将在开始拖动后开始监听,并在完成拖动后停止。 – Gio 2013-03-06 06:10:21

回答

0

因为你想检测碰撞在高速行驶时发生的事情,你需要使用某种形式的席卷多边形的碰撞检测。在前一帧和最后一帧之间只有一次采样冲突总是有失败的可能。

退房风靡碰撞检测的这个简短解释: http://howlingmoonsoftware.com/wordpress/?p=300

或者只是做“风靡碰撞检测”的搜索

如果你在一场比赛中这样做,你可能还会发现使用像Box2D这样的图书馆将是一个值得解决的问题。在Box2D的说法中,你想要的是持续的碰撞检测。 http://www.box2d.org/manual.html

+0

我试过box2d,它可以很好地工作......但我无法使用多点触控来操作它。所以我只是想尝试从头开始构建碰撞。在这一点上,现在已经证明我有点头大。 – Tom 2013-03-04 22:22:59

+0

你应该能够让Box2D在多点触摸的情况下工作而不会有太多的悲伤。只需创建一个触摸(如鼠标向下),您可以创建一个鼠标连接,在触摸移动或输入框架上,当触摸消失时(例如鼠标移动),您将更新鼠标连接位置以跟随触摸,您应该删除它的鼠标点。 – 2013-03-04 23:21:19