好吧,所以我的 sprite 节点 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
绝对是动态的。
我做错了什么?
最佳答案
在实际声明物理体属性之前,您正在设置物理体属性。首先像您已经做的那样声明它
savior.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(savior.size.width, savior.size.height))
然后设置所有属性。
关于Swift:即使将动态设置为 false, Sprite 节点在碰撞期间仍然是动态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594918/