Ich muss Tasten leftbutton, rightbutton
beide von ihnen SKSpriteNode()
sein. Wenn der Benutzer eine der Schaltflächen berührt, bewegt sich ein kleines Schiff nach links und rechts, solange der Benutzer die Berührung hält.Wie bekomme ich die x-Position eines bewegten Objekts schnell?
Jetzt brauche ich eine Funktion oder irgendetwas anderes, das mir die ship.position.x
die ganze Zeit gibt. Ich bleibe stecken, um zu versuchen, es die Position ständig zu drucken. Ich kann es jedes Mal drucken, wenn der Knopf berührt wird, aber es druckt es nur einmal.
In meinem didMove
habe ich nur die Tasten und das Schiff erstellt. Also sollte es eher irrelevant sein.
func moveShip (moveBy: CGFloat, forTheKey: String) {
let moveAction = SKAction.moveBy(x: moveBy, y: 0, duration: 0.09)
let repeatForEver = SKAction.repeatForever(moveAction)
let movingSequence = SKAction.sequence([moveAction, repeatForEver])
ship.run(movingSequence, withKey: forTheKey)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("\(ship.position.x)")
for touch: AnyObject in touches {
let pointTouched = touch.location(in: self)
if leftButton.contains(pointTouched) {
// !! I MAKE IT PRINT THE POSITION HERE !!
moveShip(moveBy: -30, forTheKey: "leftButton")
}
else if rightButton.contains(pointTouched) {
moveShip(moveBy: 30, forTheKey: "rightButton")
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first{
let pos = touch.location(in: self)
let node = self.atPoint(pos)
if node == aButton {
} else {
ship.removeAction(forKey: "leftButton")
ship.removeAction(forKey: "rightButton")
}
}
}
In meinem Code wird die Position nur einmal zu Beginn des Touch gedruckt und nicht gedruckt, bis Sie die Berührung und berühren Sie es wieder los. Gibt es eine Möglichkeit, dies mit meinem Code zu tun?
Sie können eine Aktualisierungsmethode überschreiben. In dieser Methode sollten Sie in der Lage sein, Ihr Objekt zu bekommen und Position zu bekommen! –
Ich habe viel über diese Update-Methode gelesen. Wie kann ich es überschreiben? Wenn ich versuche, gibt es keine Update-Methode von xCode empfohlen –
Werfen Sie einen Blick auf Bharath Antwort! –