2017-11-12 2 views
-1

Ist es möglich, durch eine Animation mit Touch scrubben? Im Grunde wird die Animation schnell vor- und zurückgespult, je nachdem, in welcher Richtung sich Ihr Finger auf dem Bildschirm bewegt (x oder -x).Unity, scrub Kamera Animation mit Touch

Ich habe es geschafft, dies mit der Maus zu erreichen, aber es war eine Art Hack tbh. Ich benutzte einen Regler, um die Animationszeit zu steuern, mit

anim["CameraPath"].normalizedTime = slider.value -= touchSpeed * Time.deltaTime; 

aber ich konnte nicht bekommen diese Arbeit mit touch.so jetzt versuche ich, es zu erreichen, ohne einen Schieber verändert werden und haben nur einen Hauch Hemmschuh für X oder -X Kontrolliere die Animationszeit.

jede hilfe ist grealty geschätzt, danke.

Antwort

-1

Sie können hierzu Touch.deltaPosition.x verwenden. sein kann wie folgt aus (-Code nicht getestet, sollte aber funktionieren):

float scrubVal = 0; 

if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved){ 
    scrubVal += Input.GetTouch(0).deltaPosition.x; 
    scrubVal = Mathf.Clamp(scrubVal,0,maxScrubVal); 
    anim["CameraPath"].normalizedTime = scrubVal; 
} 

bearbeiten
Nach einer recht langen Gespräch, hier ist die Lösung, die funktioniert: https://github.com/ahmedfawaz/C-Unity-Scripts/tree/master/TouchScreenCameraScrubbing

+0

Hey Dank für Ihre Eingabe auf diese . Ich werde den Code ausprobieren, sobald ich morgen früh an meinem Computer bin und melde mich zurück. Ich möchte nur fragen, warum Sie mathf.clamp verwenden? Schränkt dies den Wert von der ersten Berührung bis zum Ende der Berührung ein? Haben Sie auch einen Tipp für einen Anfänger Coder? Wenn man mit solchen Szenarien konfrontiert wird, wie kann man das am besten herausfinden? Ich habe versucht, die Unity-API zu betrachten, aber es wäre mir nie in den Sinn gekommen, einen Float zu verwenden, ihn zu inkrementieren, zu klammern und dann in die Animation zu stecken. Vielleicht ist das etwas, das mit Erfahrung kommt ... – thatmilkman

+0

1. Es gibt einen minValue und maxValue im Slider. Da hast du früher den Schieberegler benutzt und es hat funktioniert, deshalb habe ich das Scrub wie einen Schieberegler manipuliert. Also gibt es einen minValue (0 hier) und einen maxValue (maxScrubVal). 2. Ehrlich gesagt, Googeln ist der beste Weg. Sie können fast alle Antworten finden, die ich denke. Sie müssen nur wissen, wie man effizient sucht. Und natürlich gibt es Erfahrung ... – ZayedUpal

+0

Ich denke, das macht Sinn, danke für die Klärung. Yeah ich ständig Google-Suche, nur manchmal ist es schwer, wenn Sie nicht die richtigen Sachen googlen .. Wenn es Ihnen nichts ausmacht, wie würde ich dieses Script Trägheit hinzufügen? Sie müssen den Code nicht schreiben, aber vielleicht die Logik erklären, und ich könnte versuchen, es zu codieren. Z.B. Nachdem Sie das Scrubbing losgelassen haben, wird die Animation für einige weitere Frames abgespielt und verlangsamt sich bis zum Stillstand, anstatt abrupt zu stoppen. – thatmilkman