【问题标题】:Physics not Detecting Collision物理没有检测到碰撞
【发布时间】:2015-01-24 19:29:18
【问题描述】:

我只是在场景中放置了一个方形节点,并将场景的物理主体设置为屏幕边缘。我打开了物理视图,这样你就可以看到所有的物理内容。广场周围有一个物理体,场景的边界也是如此。但是,当正方形进入边界时,什么也没有发生。广场直接穿过。这是我初始化正方形的方法:

let rect1 = CGRect(x: 100, y: 100, width: 50, height: 50)
        let square = Square(rect: rect1)
        square.fillColor = UIColor.blackColor()
        square.zPosition = 200
        square.physicsBody = SKPhysicsBody(edgeLoopFromRect: rect1)
        square.physicsBody?.allowsRotation = false
        square.physicsBody?.affectedByGravity = false
        square.physicsBody?.restitution = 0.4
        self.addChild(square)

这是我为场景初始化物理体的方式:

let physicsBody = SKPhysicsBody(edgeLoopFromRect: view.bounds)
self.physicsBody = physicsBody

非常相似的代码在其他游戏中也适用于我,所以我不确定为什么没有发生碰撞。任何帮助都非常感谢!

【问题讨论】:

  • 检查每个物体的碰撞位掩码是否相同(而不是 0)。当你分配场景的physicsBody 尝试做self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
  • 感谢您的建议。然而,两者都没有奏效。我打印了两个碰撞位掩码值,它们是:Optional(2)Optional(4294967295)
  • 你是用物理或SKActions还是手动移动方块?
  • 哦,非常感谢,这就是问题所在!我正在使用操纵杆并只是设置它的位置而不是使用冲动。我已将其更改为冲动,现在可以正常工作。谢谢!

标签: ios swift sprite-kit skphysicsbody skscene


【解决方案1】:

球的运动必须由物理引起,而不仅仅是设置位置。该问题已通过使用脉冲来移动球,然后使它们与各种物体发生碰撞来解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多