首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SpriteKit : enumerateBodiesAtPoint未显示正确的正文

SpriteKit : enumerateBodiesAtPoint未显示正确的正文
EN

Stack Overflow用户
提问于 2016-09-05 08:44:59
回答 1查看 96关注 0票数 2

我有几个未完成的圆圈不断旋转,一个用户从一个圆圈转到另一个圆圈。我从我的场景中移除了所有的重力,力等等。

图A

图B

问题:我正在尝试做一个命中检测,我只是检查用户在哪里,以及在我的场景的物理世界中是否存在SKNode的身体。如果它与形状匹配,则用户可以继续(图A),但如果他在外面,则失败(图B)

尽管形状相当复杂,但scene.showPhysics似乎与我的形状非常匹配。(见图A和图B)

代码语言:javascript
代码运行次数:0
运行
复制
let updatedOrigin = user.calculateAccumulatedFrame().origin
        user.scene?.physicsWorld.enumerateBodiesAtPoint(updatedOrigin, usingBlock: { (body, stop) in
            print("? Shape contains \(body.node!.name)")
})

哪种打印

代码语言:javascript
代码运行次数:0
运行
复制
? Shape contains Optional("User")
? Shape contains Optional("circle")
? Shape contains Optional("circle")
? Shape contains Optional("circle")
? Shape contains Optional("circle")
? Shape contains Optional("Scene")

它打印正确的用户和场景,但也打印周围的所有圆的形状,而此时应该只有一个,或者没有。节点在那里,但身体物理不应该命中。

你知道为什么当它只匹配1或者不匹配时,它会对所有的圆圈显示命中吗?谢谢!

编辑:其他信息-我在使用user.physicsBody?.allContactedBodies()时得到了类似的结果-我正在使用CGPath创建旋转节点的PhysicsBody

EN

回答 1

Stack Overflow用户

发布于 2016-09-06 12:38:25

我用一个场景创建了一个简单的测试项目,其中包含3个带物理实体的圆弧和3个矩形形状节点,这些节点识别每个圆弧的边界框。然后,我添加了一个触摸处理程序,它在点击点处放置了一个小圆圈,并添加了一个标签来标识enumerateBodiesAtPoint返回的节点,并将触摸位置作为参数。下图显示了在场景中不同位置轻拍的结果。

从测试结果来看,enumerateBodiesAtPoint如何确定物理体是否包含指定点并不明显。然而,很明显,该方法与其documentation不一致。我建议你避免在你的应用中使用它。

或者,您可以使用SpriteKit的内置接触检测:

代码语言:javascript
代码运行次数:0
运行
复制
class GameScene: SKScene, SKPhysicsContactDelegate { 
    override func didMoveToView(view: SKView) {
        self.physicsWorld.contactDelegate = self
    }

    func didBeginContact(contact: SKPhysicsContact) {
        // Handle contacts between physics bodies here
    }
}

您还可以使用CGPathContainsPoint测试点是否在CGPath中。在这里,您将需要迭代用于创建弧形物理体的路径。下图显示了我的测试项目使用CGPathContainsPoint而不是enumerateBodiesAtPoint的结果。在传递给CGPathContainsPoint之前,您可能需要使用convertPoint将测试点转换为适当的坐标空间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39322681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档