ich einen blauen Ball gemacht habe, die vom Benutzer gezogen werden kann nur auf einem roten Kreis Pfad: berechnet, wie viele Runden der Benutzer hat in einer Kreisbahn
ich wie oft überprüfen möge die Benutzer machen eine Vorwärts - oder Rückwärtsrunde (der Anfang & Ende ist an der Spitze des Kreisweges), zum Beispiel - Wenn er den Ball im Uhrzeigersinn zieht, so ist die Runde +1, und wenn er ihn auf eine andere Weise zieht Runden ist -1.
Ich habe versucht, dies zu tun (Diese Inculdes das Ziehen des Balles und mein Versuch Runden zählen):
@IBAction func dragBall(recognizer: UIPanGestureRecognizer) {
let point = recognizer.locationInView(self.view);
let earthX = Double(point.x)
let earthY = Double(point.y)
let midViewXDouble = Double(midViewX)
let midViewYDouble = Double(midViewY)
let angleX = (earthX - midViewXDouble)
let angleY = (earthY - midViewYDouble)
let angle = atan2(angleY, angleX)
let earthX2 = midViewXDouble + cos(angle)*100
let earthY2 = midViewYDouble + sin(angle)*100
circlePath2 = UIBezierPath(arcCenter: CGPoint(x: earthX2,y: earthY2), radius: CGFloat(10), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)
shapeLayer2.path = circlePath2.CGPath
if degrees == 0 {
laps += 1
print(laps)
}
}
Und es hat funktioniert! aber wenn der Benutzer den Ball sehr schnell schleppt, berechnet er nicht und berechnet nicht rückwärts.
Statt für 0 zu prüfen, können Sie Winkel Summierung tun und dann teilen sie durch 360, die Anzahl der Spiele zu erhalten. Verkleinern Sie den Winkel grundsätzlich nicht, sondern akkumulieren Sie einfach den Winkel in einer Variablen. –
@EugeneZhenyaGordin Können Sie mir ein Beispiel geben? – Eliko
ok ... also sagen Sie, Sie beginnen von 0 im Uhrzeigersinn, wenn Sie wieder an den gleichen Punkt statt Null kommen Sie einfach weiter die Grad hinzufügen, 385 ... 450 usw. Wenn Sie gegen den Uhrzeigersinn gehen, subtrahieren. wenn die Berührungen beendet sind, Gerät um 360 und du wirst die Anzahl der Spins erhalten, wenn dieser Wert negativ ist, bedeutet das, dass du gegen den Uhrzeigersinn gehst. –