Ich erstelle einen Mario-Klon für Mac, um mir zu helfen, schnelle Programmierung zu lernen. Ein Problem, auf das ich gestoßen bin, ist das Setzen eines spielbaren Spielbereichs. Ab sofort werden sich die beiden Hintergründe ("background" und "level") bewegen, wenn die linke oder rechte Taste gedrückt wird, aber graue Bereiche an den Seiten werden sichtbar. Ich möchte in der Lage sein, die Hintergründe zu bewegen, aber einen Bereich festlegen, in dem sie sich nicht mehr bewegen.Spielbare Spielfläche in Swift 3.0
import SpriteKit
class GameScene: SKScene {
let player = SKSpriteNode(imageNamed: "mario")
let background = SKSpriteNode(imageNamed: "background")
let level = SKSpriteNode(imageNamed: "level")
override func didMove(to view: SKView) {
/* Setup your scene here */
//self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
level.size = self.size
level.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
level.zPosition = 1
self.addChild(level)
background.size = self.size
background.position = CGPoint(x: level.size.width + 511, y: self.size.height/2)
background.zPosition = 0
self.addChild(background)
player.setScale(0.23)
player.position = CGPoint(x: self.size.width/8, y: 120)
player.zPosition = 2
self.addChild(player)
}
override func keyDown(with theEvent: NSEvent) {
let keyCode = theEvent.keyCode
//Moving Right
if keyCode == 124 {
level.run(SKAction.sequence([SKAction.moveBy(x: -20, y: 0, duration: 0.2)]))
background.run(SKAction.sequence([SKAction.moveBy(x: -20, y: 0, duration: 0.2)]))
player.xScale = 0.23
}
//Moving Left
if keyCode == 123 {
background.run(SKAction.sequence([SKAction.moveBy(x: 20, y: 0, duration: 0.2)]))
level.run(SKAction.sequence([SKAction.moveBy(x: 20, y: 0, duration: 0.2)]))
player.xScale = -0.23
}
//Jump
if keyCode == 126{
player.run(SKAction.sequence([SKAction.moveTo(y: 250, duration: 0.15),SKAction.moveTo(y: 120, duration: 0.2)]))
}
}
}
gibt es, verwenden Sie eine Kamera, dann müssen wir uns keine Sorgen über das Verschieben der Ebene machen – Knight0fDragon
@ Knight0fDragon danke! Weise eleganter. Einfach die Kamera dem Spieler folgen lassen, richtig? – NonCreature0714
eigentlich hätte ich wahrscheinlich den Charakter als Kind der Kamera, und wenn eine Wand getroffen wird, würde sich die Zeichenposition gegen die Kamera bewegen – Knight0fDragon