2015-04-12 41 views
0

好的,所以我的精灵节点savior需要是静态的,以便当它与我的其他节点chicken1相冲突时,它不会翻转或颠倒。它需要保持正确的一面。Swift:即使在动态设置为false之后,spritenode在碰撞期间仍然是动态的?

我设置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绝对是动态的。

我在做什么错?

回答

1

在您实际声明之前,您正在设置物理主体属性。首先声明它像你已经做

savior.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(savior.size.width, savior.size.height)) 

然后设置所有的属性。

相关问题