2016-08-03 83 views
0

我正在制作一个简单的spriteKit游戏,并且我已经设置了所有的physicsBody。我已经添加了正确的categoryBitMasks和ContactTestBitMask来检测联系。contactTestBitMask在SpriteKit中使用Swift在didBeginContact(日志)中检测不到

当我运行的应用程序,我有接触,但它并没有在日志中的didBeginContact,我添加打印(“接触”)

我似乎该得到展示。我查看了大概所有与此类似的问题和教程。

我曾尝试2种不同的方法

enum ColliderType : UInt32 { 
    case None = 0 
    case All = 0xFFFFFFFF 
    case enemy = 0b001 
    case hero = 0b010 
    case screen = 0b100 
} 

let heroCategory :UInt32 = 0x1 << 0 
let screenCategory:UInt32 = 0x1 << 1 
let enemyCategory:UInt32 = 0x1 << 2 
let scoreCategory:UInt32 = 0x1 << 3 

它奇怪我怎么有接触,但它并没有在日志中打印。

我有一个移动的背景,移动朝向英雄的敌人。英雄会躲避敌人。

我尝试添加了“GAMEOVER”功能,看它是否会通过设置

if self.movingParts.speed > 0 { 
     self.movingParts.speed = 0 

并设置速度的touchesBegan功能

,如果需要,我可以上传代码停止比赛。请告诉我。

任何形式的帮助表示赞赏。谢谢

回答

0

好了17天后,我终于想出了一个解决方案,真的不是我的错。

我所做的就是删除

func didBeginContact(contact: SKPhysicsContact) { 
    print("contact") 
} 

,并重新键入它。哇,奇怪,但它的工作。我已经注意到这个问题与其他问题(重新键入它的代码工作)。

0

有3件事你需要设置。

physicsBody.categoryBitMask 
physicsBody.contactTestBitMask 
physicsBody.collisionBitMask 

另外一定要设置SKPhysicsContactDelegate。你应该在顶部

Class GameScene : SKScene, SKPhysicsContactDelegate { 

你下课后有SKPhysicsContactDelegate并确保您在您的didMoveToView有这个

self.physicsWorld.contactDelegate = self 

希望你这会有所帮助!

+0

感谢您的回答。我有你添加的所有信息。就像我提到的,我运行的应用程序没有错误或警告。 – hka

+0

噢好吧,我需要看看你有'打印接触'的代码, –