【问题标题】:What objects is my physics object touching?我的物理对象接触到了哪些对象?
【发布时间】:2015-02-10 05:34:37
【问题描述】:

我希望一个添加了物理的显示对象 (addBody) 为我提供它正在触摸的对象的表格,但它没有。

是否有一种简单的机制来获取我的显示对象正在触摸的所有其他对象的表格?还是我必须在碰撞事件期间跟踪它们?

为清楚起见进行编辑: 我查看了区域查询,问题是我需要递归访问每个对象。想想《宝石迷阵》这个游戏。如果我有大量的物理对象掉到“地上”,并且其中一些具有相似的属性(例如 Bejeweled 中的颜色),我想知道这 5 个物理对象中的哪一个同时接触所有对象.如果 x 或更多在触摸,我想同时从游戏中移除对象。

因此,如果 A 接触 B 和 C,并且 A B 和 C 都具有相同的颜色,请立即将它们全部移除。但也许 A 和 B 在 C 出现之前已经休息了一段时间。没有真正简单的方法来检查 A 的状态,如果 C 碰撞到 B。我如何查看 C、B 和 A 对象是否都相互连接、仍然接触,并且都共享相同的属性,所以我可以他们消失了?

我尝试为坠落的物体添加一个属性,然后在碰撞事件中查看 event.other.color 是否与我的 self.color 匹配。如果他们这样做了,那么我将它们添加到另一个表中,表明它们当前正在触摸。

但是我跟踪什么是“触摸”的方法只在 event.phase == “结束”之前有效。发生这种情况时,我会从表中删除数据。不幸的是,这里发生了一些事情,事情并不总是被注册为“不再接触”。我认为这表明我的方法效果不佳。

我不可能是第一个想做这样的事情的人,但是其他人是怎么做的呢?我哪里出错了?

【问题讨论】:

    标签: coronasdk


    【解决方案1】:

    也许“区域查询”会有所帮助。查看 SampleCode/Physics/RegionQuery 中的 RegionQuery 示例应用

    【讨论】:

    • Rob,我增加了一点清晰度来解决 queryRegion 建议。也许我没有正确使用它?请查看我的详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多