2016-06-10 6 views
1

Ich mache ein Basketballspiel. Mein Problem ist, wenn ich den Ball schieße, kann ich dann den Ball wieder in der Luft berühren, was ich nicht will. Sobald der Benutzer den Ball schießt, will ich nicht berühren, um eine Wirkung zu haben. Hier ist mein Code:Wie kann ich mein Programm ändern, damit dieses Objekt nur auf eine Berührung reagiert?

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent? 
{ 
    touching = false 
    for touch: AnyObject in touches { 
    let location = touch.locationInNode(self) 
    if ball.frame.contains(location){ 
     touchingPoint = location 
     touching = true 
    } 
    } 
} 


override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    for touch: AnyObject in touches { 
    let location = touch.locationInNode(self) 
     touchingPoint = location 
    } 
} 


override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    if touching{ 
     let dt:CGFloat = 8.25/29.5 
     let distance = CGVector(dx: touchingPoint.x-ball.position.x, dy: touchingPoint.y-ball.position.y) 
     let velocity = CGVector(dx: distance.dx/dt, dy: distance.dy/dt) 
     ball.physicsBody!.velocity=velocity 
    } 
} 

Was kann ich zu meinem Programm hinzufügen, so dass eine Berührung keine Auswirkungen haben, sobald der Ball geschossen wurde?

Antwort

1

, nachdem Sie den Ball schießen deaktivieren Anwenderwechsel

ball.userInteractionEnabled = false 

es dann wieder aktivieren, wenn Sie wollen, es berühren zu können,

+0

Hölle ja @LukePatterson –

+0

@DeanSponholz :) –

+0

Sind Sie irgendwie verbunden Fragen aus meinem Profil? oder bist du zufällig darauf gestoßen? Nur neugierig, denn das war buchstäblich die schnellste richtige Antwort, die ich je gesehen habe und weil ich weiß, dass du mir mit einer vorherigen Frage geholfen hast. @LukePatterson –