【发布时间】:2016-08-03 08:18:12
【问题描述】:
我有一个奇怪的问题,我的 SKReferenceNode 在放大后没有正确碰撞。它在中心很好地碰撞,但它忽略了边缘的碰撞和接触。
Here is the first photo of the scene。 SKReferenceNode 已显着放大,如this 照片所示,边缘没有正确碰撞。 PhysicsBody 似乎是正确的(打开 showPhysics),但球拒绝碰撞。
SKReferenceNode 正在使用 alpha 碰撞遮罩,因为我需要在将来将其更改为更大的精灵来执行动画等。此外,非缩放对象完全可以正常工作。最后,在球与中心碰撞后,它确实起作用,并且块被重置,碰撞再次开始按预期工作。修复它的代码可能在重置函数中,但我在加载关卡之前重置了所有内容,所以这没有意义。这是我的重置代码的一部分:
func reset() {
physicsWorld.gravity = CGVectorMake(0, -9.8)
for grav in gravityBlock {
grav.reset()
}
gravity = -9.8
//Resets blocks
for blocks in destroyedBlocks { //the blocks are stored in destroyedBlocks when collided with
blocks.reset()
}
destroyedBlocks = []
/*Irrelevant code removed*/
}
这是我的 blocks.reset() 函数:
override func reset() {
super.reset()
self.physicsBody?.categoryBitMask = 1
removeAllActions()
self.texture = self.text
shadow.hidden = false
self.alpha = 0
shadow.alpha = 0
let appear = SKAction(named: "Appear")!
self.runAction(appear)
shadow.runAction(SKAction.fadeInWithDuration(0.25))
}
这里是 super.reset()
func reset() {
self.hidden = false
state = .NotBroken
}
非常感谢!
【问题讨论】:
标签: ios swift xcode sprite-kit