我正在制作一个简单的spriteKit游戏,我已经设置了所有的物理实体。我添加了正确的categoryBitMasks和ContactTestBitMask来检测联系人。
当我运行应用程序时,我有联系但它没有显示在我添加了print(“联系人”)的didBeginContact的日志中
我似乎无法得到这个。我已经查看了与此最相似的所有问题和教程。
我尝试过两种不同的方法
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 :(得分:0)
您需要设置3件事。
physicsBody.categoryBitMask
physicsBody.contactTestBitMask
physicsBody.collisionBitMask
还要确保设置SKPhysicsContactDelegate。你的课程在顶部
后应该有SKPhysicsContactDelegateClass GameScene : SKScene, SKPhysicsContactDelegate {
确保你的didMoveToView
中有这个self.physicsWorld.contactDelegate = self
希望你的帮助!
答案 1 :(得分:0)
好了17天后,我终于找到了一个解决方案,真的不是我的错。
我所做的就是擦除
func didBeginContact(contact: SKPhysicsContact) {
print("contact")
}
重新打字。哇,很奇怪,但它有效。我已经注意到这个问题与其他问题(重新键入代码使其工作)。