Hallo Leute,
ich habe da ein Problem mit meinem kleinen Spiel. Ich habe erst Anfang Dezember begonnen mit Swift zu Programmieren und bin insgesamt noch nicht so lange dabei. Also verzeiht mir wenn ich nicht alles auf anhieb verstehe oder mein Code ein bisschen komisch ist
Hier mal der Code mit dem ich Probleme habe:
Alles anzeigen
Console Ausgabe:
contactpoint: (219.408203125,111.748443603516)
child added: (219.408203125,111.748443603516)
Optional((0.0,0.0))
Optional((-10.724986076355,-0.305910587310791))
Optional((-10.724986076355,-1.01913499832153))
Optional((-10.724986076355,-2.13899564743042))
Optional((-10.724986076355,-3.66481566429138))
usw...
Erklärung:
Ich will nachdem 2 Objekte auf dem Spielfeld kollidiert sind diese beiden entfernen und 1 neues an dem contactPoint erstellen. laut meiner Konsolen Ausgabe stimmt CGPoint aus contact.contactPoint.
Sobald ich aber in der Updatefunktion die Position auslese wird die 1. Position schoneinmal falsch bei 0.0, 0.0 festgelegt und ab dann fällt der ball ins nicht sichtbare leere.
Ich finde den Fehler einfach nicht und dachte hier könnte mir evtl. jemand weiterhelfen. Der Code ist der Einfachheit halber zusammengefasst, immoment läuft der aber auch so in meinem Programm mit dem Fehler...
ich habe da ein Problem mit meinem kleinen Spiel. Ich habe erst Anfang Dezember begonnen mit Swift zu Programmieren und bin insgesamt noch nicht so lange dabei. Also verzeiht mir wenn ich nicht alles auf anhieb verstehe oder mein Code ein bisschen komisch ist
Hier mal der Code mit dem ich Probleme habe:
C-Quellcode
- //fragt ab ob die beiden Objekte kollidieren (funktioniert)
- if ballBody.categoryBitMask == ballCategory && goalOrGroundBody.categoryBitMask == ballCircleCircleCategory {
- let nodeToRemove = goalOrGroundBody.node as SKSpriteNode
- let contactPoint = contact.contactPoint
- //entfernt das eine Objekt der Kollision
- nodeToRemove.removeFromParent()
- //entfernt das andere Objekt der Kollision
- removeBall()
- println("contactpoint: \(contactPoint)")
- //erstellt das neue Objekt
- let ball = SKSpriteNode(imageNamed: "Ball2")
- ball.name = "ball2"
- ball.physicsBody = SKPhysicsBody(circleOfRadius: CGRectGetHeight(ball.frame) / 2)
- ball.physicsBody?.friction = 0
- //Wichtig: contactPoint stimmt laut println() oben
- ball.position = contactPoint
- self.addChild(ball)
- //position stimmt immer noch
- println("child added: \(ball.position)")
- }
- override func update(currentTime: NSTimeInterval) {
- //hier stimmt die position nicht mehr
- let node = childNodeWithName("ball2")? as? SKSpriteNode
- if node != nil {
- println(node?.position)
- }
- }
contactpoint: (219.408203125,111.748443603516)
child added: (219.408203125,111.748443603516)
Optional((0.0,0.0))
Optional((-10.724986076355,-0.305910587310791))
Optional((-10.724986076355,-1.01913499832153))
Optional((-10.724986076355,-2.13899564743042))
Optional((-10.724986076355,-3.66481566429138))
usw...
Erklärung:
Ich will nachdem 2 Objekte auf dem Spielfeld kollidiert sind diese beiden entfernen und 1 neues an dem contactPoint erstellen. laut meiner Konsolen Ausgabe stimmt CGPoint aus contact.contactPoint.
Sobald ich aber in der Updatefunktion die Position auslese wird die 1. Position schoneinmal falsch bei 0.0, 0.0 festgelegt und ab dann fällt der ball ins nicht sichtbare leere.
Ich finde den Fehler einfach nicht und dachte hier könnte mir evtl. jemand weiterhelfen. Der Code ist der Einfachheit halber zusammengefasst, immoment läuft der aber auch so in meinem Programm mit dem Fehler...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Waffeln ()
