好吧,所以我的精灵节点savior
需要是静态的,这样当它与我的另一个节点chicken1
发生碰撞时,它不会被翻转或翻转到其侧面。它需要保持正面朝上。
我在这里设置了savior
:
var saviorTexture = SKTexture(imageNamed: "1.png")
saviorTexture.filteringMode = SKTextureFilteringMode.Nearest
savior = SKSpriteNode(texture: saviorTexture)
savior.setScale(0.2)
savior.position = CGPoint(x: self.frame.size.width * 0.5, y: self.frame.size.height * 0.2)
//Savior physics
savior.physicsBody?.allowsRotation = false
savior.physicsBody?.dynamic = false
savior.physicsBody?.affectedByGravity = false
savior.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(savior.size.width, savior.size.height))
savior.physicsBody?.categoryBitMask = ColliderType.Savior.toRaw()
savior.physicsBody?.contactTestBitMask = ColliderType.Chicken1.toRaw()
savior.physicsBody?.collisionBitMask = ColliderType.Chicken1.toRaw()
self.addChild(savior)
正如您所看到的,我将allowsRotation
设置为false并将dynamic
设置为false,但仍然允许轮换,并且节点仍然是动态的。
当我开启查看物理实体时,我的另外2个静态节点有绿色物理实体,而savior
有一个深蓝色物理实体,让我相信绿色是静态的,蓝色是动态的。这使得savior
绝对是动态的。
我做错了什么?
答案 0 :(得分:1)
在实际声明物理主体属性之前,您正在设置物理主体属性。首先声明它就像你已经做的那样
savior.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(savior.size.width, savior.size.height))
然后设置所有属性。