2016-09-20 3 views
1

Ich programmiere ein Skript in Unity, das eine Sequenz von Bewegungen auf meine Kamera anwendet, um einem vordefinierten Pfad zu folgen. Ich muss die Szene zwischen jeder kleinen Bewegung neu streichen, sonst wird die Szene erst gezeichnet, wenn sie ihre endgültige Position erreicht hat. Ich habe viele Optionen ausprobiert, aber ich finde einfach nicht, dass etwas für mich funktioniert.Wie erzwinge ich meine Szene neu zu streichen?

ich schon versucht:

SceneView.RepaintAll(); 
HandleUtility.Repaint(); 

und es kann nicht die Repaint() -Methode von den Editor oder Editorklassen finden.

Irgendeine Idee?

+1

Ich verstehe nicht. Du versuchst, deine Kamera zu bewegen: ok. Sie tun dies in der Update() -Methode richtig? Ich verstehe es nicht mit allen von euch Repaint Sachen. – MadJlzz

+0

In LateUpdate() rufe ich für meine Eingabe-Handler, die vordefinierte Bewegungen auf der Kamera, basierend auf der aktuellen Eingabe. In diesem Fall möchte ich eine Methode sagen, die besagt, dass die Kamera ihren Pfad findet und zu einer Draufsicht in einer quadratischen Bewegung wechselt, wenn Sie diese bestimmte Taste drücken. Alle verwendeten Methoden sind bereits in meiner Klasse codiert, aber wenn es verarbeitet wird, wird es nicht visuell aktualisiert, bis es den letzten Frame erreicht. Daher versuche ich ein Repaint zwischen jedem Frame innerhalb des Prozesses auszulösen (nach jeder kleinen Bewegung). – BUZZE

+1

Ok, ich könnte es verstanden haben. Die Sache ist, dass Sie alle Ihre Position Sachen in Ihrem LateUpdate() berechnen. Rufen Sie die Eingabe in der Update() -Methode ab und wenden Sie Ihre Bewegung im LateUpdate() – MadJlzz

Antwort

1

Rendering-Prozess starten nach jedem Update(). Lassen Sie Ihre Bewegungslogik in mehreren Updates mit Interpolation zwischen jedem Update abarbeiten.

Verwandte Themen