Ich habe Mühe, einen Weg zu finden, den Bildschirm mit Zeilen und Zeilen von Sprite-Knoten zu füllen.Bildschirm mit Bodentexturknoten füllen
Ich kann derzeit nur eine durchgezogene Linie wie so bekommen.
Ich mag es so der Code selbst wiederholt, so dass es unter der aktuellen Zeile füllt, habe ich mehrere Dinge ohne Glück versucht.
Ich bin neu in SpriteKit und iOS Spielentwicklung, so dass ich etwas offensichtliches verpassen könnte.
Unten ist mein Code, jede Hilfe mit sehr geschätzt werden.
let world = SKNode()
let ground = Ground()
override func didMoveToView(view: SKView) {
/* Setup your scene here */
self.backgroundColor = UIColor(red: 0.4, green: 0.6, blue: 0.95, alpha: 1)
self.addChild(world)
var groundPosition = CGPoint(x: -self.size.width, y: 600)
let groundSize = CGSize(width: self.size.width * 3, height: 0)
ground.spawn(world, position: groundPosition, size: groundSize)
}
class Ground: SKSpriteNode, GameSprite{
var textureAtlas: SKTextureAtlas = SKTextureAtlas(named: "ground.atlas")
// Property named groundTexture to store current ground texture:
var groundTexture:SKTexture?
func spawn(parentNode: SKNode, position: CGPoint , size: CGSize) {
parentNode.addChild(self)
self.size = size
self.position = position
self.anchorPoint = CGPointMake(0, 1)
//default to the the mud texture
if groundTexture == nil {
groundTexture = textureAtlas.textureNamed("grass")
}
// Repeate the texture
createChildren()
}
//Builds nodes to repeate the ground
func createChildren() {
if var texture = groundTexture{
var tileCount:CGFloat = 0
let textureSize = texture.size()
let tileSize = CGSize(width: 25, height: 15)
// Build nodes until we cover the screen
while tileCount * tileSize.width < self.size.width{
// randomly chooses the texture that will be used
let random = arc4random_uniform(50)
if random < 25{
texture = textureAtlas.textureNamed("grass")
}else{
texture = textureAtlas.textureNamed("mud")
}
let tileNode = SKSpriteNode(texture: texture)
tileNode.size = tileSize
tileNode.position.x = tileCount * tileSize.width
tileNode.anchorPoint = CGPoint(x: 0, y: 1)
self.addChild(tileNode)
tileCount++
}
}
}
Sie nicht die y-Eigenschaft der Position überall ändern. –
Danke Nick für das Kommentieren, hast du eine ungefähre Vorstellung davon, wo die y-Position eingestellt werden soll? Dies ist das Bit, auf dem ich feststecke. –
Bevor Sie sich mit der Optimierung beschäftigen, sollte es wahrscheinlich eine äußere Schleife außerhalb Ihrer aktuellen while-Schleife geben, die die y jedes Mal ändert, wenn Sie einen horizontalen Durchlauf für _n_mal ausgeführt haben (basierend auf der Größe der Szene). –