Ich möchte den Spieler bitten, eine einfache Form (Dreieck, Quadrat, Stern, alles, was mit einem Strich gemacht werden kann) mit der Maus oder auf einem Touchscreen nachzubilden.
Orientierung ist wichtig, Größe nicht. Beispiel:
Kann mir jemand Anweisungen geben, welche Techniken verwendet werden können?
Antworten:
Sie müssen an die Formen in Vektorform denken. Für Ihr Dreieck kann die Form also als eine Reihe von Vektoren dargestellt werden: (-0,5, -0,5), (1, 0), (-0,5, 0,5). Da Sie die Form und Ausrichtung kennen, passen Sie die Fingerbewegung des Benutzers grundsätzlich an die erwartete Form an.
Sie bestimmen den Maßstab des Bildes, indem Sie den anfänglichen Berührungspunkt des Benutzers und dann bei jeder Aktualisierung den Punkt protokollieren, an dem sich sein Finger befindet, bis er das Ende der ersten Zeile erreicht (dazu später mehr). Die Länge des Vektors von der Stelle, an der die Berührung begonnen hat, bis zur Stelle, an der sich die erste Ecke befindet, ist der Maßstab des Bildes, das Sie voraussichtlich zeichnen werden. Sie multiplizieren Ihre Vektordarstellung der erwarteten Form mit dieser Skala, um die richtige Form zu erhalten, die sie zeichnen sollen.
Um die erste Ecke zu bestimmen, sollten Sie wahrscheinlich den Winkel des Vektors vom anfänglichen Abgriffspunkt bis zum aktuellen Abgriffort verfolgen. Sobald dieser Winkel um einen bestimmten Schwellenwert vom erwarteten Winkel abweicht, nehmen Sie an, dass der Benutzer die Zeichenrichtung geändert hat.
Da der Punkt, an dem wir die Richtungsänderung erkennen (unteres blaues Kreuz auf dem Bild oben), nicht die tatsächliche Ecke ist, sondern der Schwellenwinkel überschritten wurde, müssen wir immer noch den tatsächlichen Punkt bestimmen, um den richtigen Maßstab zu bestimmen. Dies geschieht durch Betrachten der ersten beiden Vektoren unserer Form - in unserem Fall (-0,5, -0,5) und (1, 0). Wir stellen sie so ein, dass der erste die Startposition des Hahns durchläuft und der zweite den Punkt durchläuft, an dem der Schwellenwinkel überschritten wird. Wir bleiben mit (-0,5 + x1, -0,5 + y1) und (1 + x2, 0 + y2), wobei x1, y1, x2 und y2 die Offsets sind, die erforderlich sind, um sicherzustellen, dass die Linien durch die angegebenen Punkte verlaufen. Dann finden wir den Schnittpunkt dieser beiden Linien. Dies ist der Punkt, an dem der X-Wert beider Linien gleich und der Y-Wert beider Linien gleich ist.
Um die Zeichenqualität zu berechnen, müssen Sie den Pfad des Benutzers in gleichen Abstandsintervallen abtasten.
In jedem Intervall finden Sie den nächstgelegenen Punkt auf der richtigen Form. Die Entfernung ist der Fehler.
Am Ende müssen Sie diesen Fehler auch basierend auf der gezeichneten Entfernung gegenüber der richtigen Entfernung normalisieren. Dies bedeutet, dass das Zeichnen einer längeren Form Ihren Fehler nicht erhöht und das Zeichnen einer kürzeren Form ihn nicht verringert.
Viele der hier erwähnten Dinge haben alternative Ansätze. Ich könnte auch viel tiefer gehen in Bezug auf die lineare Algebra, die für die Berechnungen benötigt wird, oder die spezifischen Klassen und Methoden, die in Unity selbst verwendet werden. Ich benötige jedoch weitere Informationen darüber, welche zusätzliche Hilfe Sie benötigen, bevor ich das tun kann.
quelle