Ich habe ein Problem bei der Entwicklung meiner Anwendung mit Swift 3 und Spritekit festgestellt. Ich habe vier separate Dreiecke gemacht, die ein Quadrat bilden, um eine Kollision zu erkennen. Wenn ich diese Dreiecke als eine Einheit rotiere, überlappen sie sich und halten nicht die Form eines Quadrats (sie überlappen sich gegenseitig) während der Drehung, sondern gehen dann wieder zu normal zurück, sobald die Drehung abgeschlossen ist.Überlappende SpriteNodes beim Drehen als Einheit
Dies ist der Code, den ich für die Rotation verwendet:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches{
let location = touch.location(in: self)
if location.x < 0 {
blueTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
redTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
yellowTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
greenTriLeft.run(SKAction.rotate(byAngle: CGFloat(M_PI_2), duration: 0.2))
} else if location.x > 0 {
blueTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
redTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
yellowTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
greenTriRight.run(SKAction.rotate(byAngle: CGFloat(-M_PI_2), duration: 0.2))
}
}
}
Im Folgenden ein Bild von meinem Platz aus vier separaten Dreiecken
Bitte fühlen Sie sich frei gemacht wird, mich zu fragen für jeder andere Code, den Sie sehen müssen, hilft jede Eingabe. Außerdem konnte ich das überlappende Problem in Aktion nicht so sehr im Voraus bedauern, aber ich werde mein Bestes versuchen, es zu bekommen.
Würde ich in den Berührungen zu erklären, begann Funktion oder in der Klasse? –
blueTriLeft = self.childNode (mitName: "blueTriLeft") as! SKSpriteNode –
^^^^^^ wird dies die Lösung über –