首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用SKPhysicsBody后检测SKPhysicsBody冲突

应用SKPhysicsBody后检测SKPhysicsBody冲突
EN

Stack Overflow用户
提问于 2016-12-31 22:44:00
回答 1查看 252关注 0票数 1

我有一个简单的游戏,功能如下:

我的目标是检测球何时击中白色部分(游戏结束时将加载)或何时球击中灰色部分(游戏继续)。

因为形状会收缩,并且会有很多事情发生,所以我认为当我需要的时候创建SKPhysicsBody会更有效,然后在碰撞检查发生后删除它。因此,当我点击屏幕时,会发生这样的情况:(在5*0.0325秒-圆圈收缩所需的时间-过去后,它会将物理体添加到灰色和白色部分,这样我就可以检测到球在接触哪个)。

代码语言:javascript
复制
DispatchQueue.main.asyncAfter(deadline: .now() + seconds, execute: {
        let trackPhysics = SKPhysicsBody(texture: track.texture!, size: track.texture!.size())
        trackPhysics.isDynamic = false
        trackPhysics.affectedByGravity = false
        track.physicsBody = trackPhysics

        let goalPhysics = SKPhysicsBody(texture: goal.texture!, size: goal.texture!.size())
        goalPhysics.isDynamic = false
        goalPhysics.affectedByGravity = false
        goal.physicsBody = goalPhysics
    })

这很管用。SKPhysicsBody完全应用于灰度和白色部分,不损失任何框架和跟随旋转。问题是..。我怎样才能检测到哪个球是接触的?因为他们没有正式碰撞,所以根本不会称之为碰撞(这是有道理的,因为他们并没有真正地碰撞。)

这是基本的逻辑,在我想检查结果之前,它运行得很好:

  1. 有人触碰屏幕
  2. 圆缩
  3. 在它们收缩后,它将根据其纹理为灰白色部分创建一个SKPhysicsBody。
  4. 问题在这里..。我怎样才能察觉到球在碰什么?

我试过这样做:

代码语言:javascript
复制
    func didBegin(_ contact: SKPhysicsContact) {
        print("touching!")
    }

    func didEnd(_ contact: SKPhysicsContact) {
        print("not touching")
    }

它根本没有消息,并且在应用allContactedBodies() 1秒后尝试使用SKPhysicsBody (),但是对所有消息返回一个0的计数。我甚至试过让这5秒还不起作用

代码语言:javascript
复制
DispatchQueue.main.asyncAfter(deadline: .now() + seconds + 1, execute: {
        print(track.physicsBody!.allContactedBodies().count)
        print(goal.physicsBody!.allContactedBodies().count)
    })

这就是应用SKPhysicsBody的样子,您可以看到物理应用是完美的。

我做错了什么吗?有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-01 21:42:00

解决办法(如上文的评论所示)是:

  1. 将节点的isDynamic属性设置为true以使冲突检测正常工作。
  2. 通过反复检查场景的physicsWorld.contactDelegate设置,确保调用了physicsWorld.contactDelegate.
  3. 确保面具和物理身体在适当的时间和地点设置。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41412183

复制
相关文章

相似问题

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