【发布时间】:2014-08-15 16:02:34
【问题描述】:
请多多包涵,我在 XCode/IOS 上工作了一天,所以你可能需要解释一下……
我有一个碰撞方法:
func didBeginContact(contact: SKPhysicsContact!) {
if (contact != nil && contact.bodyA != nil && contact.bodyB != nil)
{
var firstBody:SKPhysicsBody
var seconBody:SKPhysicsBody
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA
seconBody = contact.bodyB
}
else
{
firstBody = contact.bodyB
seconBody = contact.bodyA
}
if (firstBody.categoryBitMask & torpedoCategory != 0 && seconBody.categoryBitMask & alienCategory != 0)
{
if firstBody.node != nil && seconBody.node != nil {
torpedodidCollideWithAlien(firstBody.node as SKSpriteNode, alien: seconBody.node as SKSpriteNode)
}
}
}
}
由此触发:
var alien:SKSpriteNode = SKSpriteNode(imageNamed: "Alien")
alien.physicsBody = SKPhysicsBody(texture: alien.texture, size: alien.size)
alien.physicsBody.categoryBitMask = alienCategory
alien.physicsBody.contactTestBitMask = torpedoCategory
alien.physicsBody.collisionBitMask = 0
alien.zPosition = -100000
我正在尝试使用 XCode 6 中可用的像素碰撞。问题是 didBeginContact 方法在没有碰撞时触发,并且一次碰撞会触发多次。
我是否错误地使用了物理系统?
这里是完整项目的链接:https://www.dropbox.com/s/1npctvb99vw2l7x/BubbleBurst.zip
掩码值:
let alienCategory:UInt32 = 0x1 << 1
let torpedoCategory:UInt32 = 0x1 << 0
【问题讨论】:
-
alienCategory和torpedoCategory的值是多少?我无法下载您的项目,因为 Dropbox 被公司的防火墙阻止。 -
@BrunoWerminghoff - 我在问题的底部添加了额外的细节。
标签: ios swift sprite-kit xcode6 skphysicsbody