Ich habe zufällig Knoten hervorbringen, die sich vertikal nach unten bewegen.Swift SpriteKit enthalten Knoten innerhalb der Bildschirmbreite
Hier ist der Code, dies zu tun:
let meteTexture = SKTexture(imageNamed: "redmete.png")
let movementAmount = arc4random() % UInt32(self.frame.width)
let meteOffset = CGFloat(movementAmount) - self.frame.width/2
let meteTime = arc4random_uniform(4) + 3;
let moveMete = SKAction.move(by: CGVector(dx: 0, dy: -2 * self.frame.height), duration: TimeInterval(meteTime))
redmete = SKSpriteNode(texture: meteTexture)
redmete.position = CGPoint(x: self.frame.midX + meteOffset, y: self.frame.midY + self.frame.height/2)
Mein einziges Problem ist, dass die meteOffset die Mitte des Sprites verwendet daher es gelegentlich so 50% laichen können oder so ist der Ansicht heraus.
Ich habe
versuchtlet movementAmount = arc4random() % UInt32(self.frame.width - meteTexture.size().width/2)
ich auch
habe versuchtlet meteOffset = CGFloat(movementAmount) - meteTexture.size().width/2 - self.frame.width/2
Aber weder in der Ansicht, die die Gesamtheit des Sprite zu halten. Wie kann ich das machen?
Es ist auf dieser Zeile Code Fehler: randomXPosition = meteorWidth/2 + arc4random()% horizontalRange lassen. "%" kann nicht auf Operanden vom Typ "UInt32" und "CGFloat" angewendet werden. –
Ich habe den numerischen Casting-Code nicht geschrieben, um die Formel lesbar zu halten. Sie müssen gegebenenfalls zu CGFloat wechseln. –
Ich warf auf CGFloat, aber das behob das Problem immer noch nicht. Ich habe viele Kombinationen ausprobiert, kann aber nichts zur Arbeit bringen. Wenn überhaupt, werden die Knoten immer weiter vom Bildschirm entfernt –