【发布时间】: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