三精灵节点碰撞
Posted
技术标签:
【中文标题】三精灵节点碰撞【英文标题】:Three sprite node collision 【发布时间】:2015-11-15 05:27:10 【问题描述】:我有一个射击应用程序在子弹击中两个重叠节点时崩溃。我已经尝试了一切,我尝试检查身体是否为零,但它不允许我,我不知道如何让这项工作了。这是代码:
func didBeginContact(contact: SKPhysicsContact)
var firstBody:SKPhysicsBody
var secondBody:SKPhysicsBody
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
firstBody = contact.bodyA
secondBody = contact.bodyB
else
firstBody = contact.bodyB
secondBody = contact.bodyA
if ((firstBody.categoryBitMask & photonCategory) != 0 && (secondBody.categoryBitMask & alientCategory) != 0)
aliensCollideWithBullets(firstBody.node as! SKSpriteNode, alien: secondBody.node as! SKSpriteNode)
// firstBody.node?.removeFromParent()
// secondBody.node?.removeFromParent()
func aliensCollideWithBullets(torpedo:SKSpriteNode, alien:SKSpriteNode)
print("hit")
torpedo.removeFromParent()
alien.removeFromParent()
aliensDestroyed++
trumpsDestroyedLabel.text = "\(aliensDestroyed) Trumps"
if (aliensDestroyed > 10)
线路崩溃是:
if ((firstBody.categoryBitMask & photonCategory) != 0 && (secondBody.categoryBitMask & alientCategory) != 0)
aliensCollideWithBullets(firstBody.node as! SKSpriteNode, alien: secondBody.node as! SKSpriteNode)
// firstBody.node?.removeFromParent()
// secondBody.node?.removeFromParent()
感谢任何帮助。
【问题讨论】:
应用崩溃时的实际错误信息是什么? 【参考方案1】:检查 bodyA 和 bodyB 是否为零。我遇到了同样的问题,用这行代码解决了:
if contact.bodyA.node != nil && contact.bodyB.node != nil
【讨论】:
以上是关于三精灵节点碰撞的主要内容,如果未能解决你的问题,请参考以下文章