基本上,我有地面,球员(雷蒙德)和硬币。当玩家触地时,任何事情都不应该发生,游戏继续正常进行。当玩家接触到硬币时,我想让它打印到控制台“硬币与玩家的接触”。
enum ColliderType: UInt32 {
case Raymond = 1
case Object = 2
case Coin = 3
}雷蒙兹物理
raymond.physicsBody = SKPhysicsBody(circleOfRadius: raymondTexture.size().height/2)
raymond.physicsBody!.dynamic = true
raymond.physicsBody!.categoryBitMask = ColliderType.Raymond.rawValue
raymond.physicsBody?.contactTestBitMask = ColliderType.Object.rawValue
raymond.physicsBody?.collisionBitMask = ColliderType.Object.rawValue硬币物理学
coin.physicsBody = SKPhysicsBody(circleOfRadius: raymondTexture.size().height/2)
coin.physicsBody!.dynamic = true
coin.physicsBody!.categoryBitMask = ColliderType.Coin.rawValue
coin.physicsBody?.contactTestBitMask = ColliderType.Raymond.rawValue
coin.physicsBody?.collisionBitMask = ColliderType.Object.rawValue如果需要的话,地面物理
ground.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.frame.size.width, 1))
ground.physicsBody!.dynamic = false
ground.physicsBody!.categoryBitMask = ColliderType.Object.rawValue
ground.physicsBody?.contactTestBitMask = ColliderType.Object.rawValue
ground.physicsBody?.collisionBitMask = ColliderType.Object.rawValue这是我的联系函数,我知道它是错误的,我需要帮助如何检测硬币和雷蒙德触摸。
func didBeginContact(contact: SKPhysicsContact) {
print("coin contact with player")
}提前谢谢。
发布于 2017-04-20 14:17:10
有几种检查方法,这里有两个最基本的方法让你开始。第一个检查联系人名称,第二个检查CategoryBitMask。值得注意的是,如果没有正确设置PhysicsBodies位掩码,那么两个对象之间的联系人可能永远不会被报告。
编辑确保场景符合SKPhysicsContactDelegate
class GameScene: SKScene, SKPhysicsContactDelegate..。
func didBegin(_ contact: SKPhysicsContact) {
let contactAName = contact.bodyA.node?.name
let contactBName = contact.bodyB.node?.name
if (contactAName == "raymond") || (contactBName == "raymond") {
if (contactAName == "coin") || (contactBName == "coin") {
print("coin contact with player")
return
}
}
//or
if contact.bodyA.categoryBitMask == ColliderType.Coin || contact.bodyB.categoryBitMask == ColliderType.Coin {
if contact.bodyA.categoryBitMask == ColliderType.Raymond || contact.bodyB.categoryBitMask == ColliderType.Raymond {
print("coin contact with player")
return
}
}
}https://stackoverflow.com/questions/43521671
复制相似问题