Dies ist mein derzeitiger Code für den Fortschrittsbalken. In der GameScene habe ich die var xProgress = 1 gesetzt. Sollte nicht das leere Bild erscheinen wie der Wert jetzt = 0 sein sollte?Swift Erstellen einer Gesundheit Fortschrittsbalken mit einem SKSpriteNode
Ich versuche, den SKNode zu testen, bevor es den Wert verringert im Laufe der Zeit, so dass es langsam reduziert.
class IMProgressBar : SKNode{
var emptySprite : SKSpriteNode? = nil
var progressBar : SKCropNode
init(emptyImageName: String!,filledImageName : String)
{
progressBar = SKCropNode()
super.init()
let filledImage = SKSpriteNode(imageNamed: filledImageName)
progressBar.addChild(filledImage)
progressBar.maskNode = SKSpriteNode(color: UIColor.white,
size: CGSize(width: filledImage.size.width * 2, height: filledImage.size.height * 2))
progressBar.maskNode?.position = CGPoint(x: -filledImage.size.width/2,y: -filledImage.size.height/2)
progressBar.zPosition = 0.1
self.addChild(progressBar)
if emptyImageName != nil{
emptySprite = SKSpriteNode.init(imageNamed: emptyImageName)
self.addChild(emptySprite!)
}
}
func setXProgress(xProgress : CGFloat){
var value = xProgress
if xProgress < 0.1{
value = 0
}
if xProgress > 0.1 {
value = 0
}
progressBar.maskNode?.xScale = value
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
In meinem GameScene Ich habe auch:
let progressBar = IMProgressBar(emptyImageName: nil,filledImageName: "health")
progressBar.position = CGPoint(x: self.frame.midX, y: self.frame.height/3)
self.addChild(progressBar)
Es gebräuchlicher wäre der Spieler die Gesundheit in einer Variablen zu speichern, sie senken, wenn etwas auf sie trifft, und Spiel vorbei, wenn es Null erreicht. Sie rendern es separat auf dem Bildschirm, um dem Player den Wert anzuzeigen, aber versuchen Sie nicht, den Wert aus dem Display zu lesen. – simonWasHere
Ich war nicht sehr klar in der Frage. Der Fortschrittsbalken ist eher eine Brennstoffleiste. Daher muss der Spieler häufig mit einem Sprite-Knoten kollidieren, um seinen Treibstoffpegel zu erhöhen, der der Balken ist. –
Es ist noch besser, den Brennstoffwert in einer Variablen – simonWasHere