【问题标题】:Detect tap on child bones检测对子骨骼的敲击
【发布时间】:2015-07-27 05:33:30
【问题描述】:

我有一个带有一些骨头的 dae 对象。我想用以下方法检测特定骨骼上的敲击:

- (NSArray *)hitTest:(CGPoint)thePoint options:(NSDictionary *)options;

这个方法只返回父节点,无论我在哪里点击对象。 我该如何处理?

提前致谢。

【问题讨论】:

  • 您是在谈论 SCNSkinner 上下文中的节点吗?如果是这样,骨骼将永远不会在命中测试结果中返回,因为它们没有任何几何形状。骨骼没有任何厚度,因此不会被击中,只有几何体(实际的三角形)可以。
  • 好的,这就是原因。我可以通过位置比较来猜测命中吗?有可能骗它吗?
  • 或者是否可以将节点位置转换为 2d 并检查矩形的点击事件?
  • 骨骼被用作一种用于使几何体变形的蒙皮器。几何可以从geometryIndex(几何元素的索引)、faceIndex和你应该能够检索骨骼的蒙皮信息中进行命中测试。 但是你想做什么?为什么需要骨头?

标签: ios objective-c ios8 scenekit


【解决方案1】:

这是不可能的,因为骨骼没有要被击中的几何体。

您可以使用的一个技巧是在每根骨头上创建一个简单的隐形框。组合这些盒子并将骨架应用到它上面。然后,检查命中测试的geometryIndex

另一种方法是在您的 3D 软件中创建一个非常简单的网格,它遵循没有细节的骨骼,使其不可见,并将其绑定到骨架。记下每个多边形的位置,并对照faceIndex 进行命中测试。

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 2023-03-23
    • 1970-01-01
    • 2014-09-23
    • 2019-06-13
    • 1970-01-01
    • 2019-03-12
    • 2012-10-17
    • 2015-08-17
    相关资源
    最近更新 更多