Jump to content
Unity Insider Forum

fixedUpdate oder doch einfach nur Update ?


Ismoh

Recommended Posts

Ich hab bei meine 2D SideScroller folgendes Problem:

 

Ich bewege den Player über die Update- und die CharacterController.Move-Methode.

 

Wenn ich nun die Scene starte habe ich bei der Fantastic-Quality 70-90Fps.

Wenn ich aber über meim Options-Menü die Quality auf Fastest stelle(300-1000Fps), springt der Player nicht mehr so hoch wie bei der Fantastic-Quality, weil ich in der Update-Methode die Gravity von der y-Koordinate abziehe.

 

Da die Update-Methode je nach Einstellung schneller durchläuft, frage ich mich, ob die Update-Methode die richtige ist.

 

Hab ich ggf iwas falsch verstanden ?

Sollte ich die Bewegung über fixedUpdate realisieren, oder, oder, oder einfach die Quality auf Fantastic lassen ?

Aber je nach Hardware ist auch diese Realisierung eher fehlerbehaftet, da der Spieler schon eine gewisse Höhe springen können muss, um über die Blöcke springen zu können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

The interval in seconds at which physics and other fixed frame rate updates (like MonoBehaviour's FixedUpdate) are performed.

For reading the delta time it is recommended to use Time.deltaTime instead because it automatically returns the right delta time if you are inside aFixedUpdate function or Update function.

Note that the fixedDeltaTime interval is with respect to the in-game time affected by timeScale

 

 

Quelle: http://docs.unity3d....dDeltaTime.html

 

 

Das dürfte deine Frage beantworten.

 

Falls nicht, ich selber benutze immer in der FixedUpdate Time.deltaTime, und es hat bisher immer super funktioniert :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke Leute,

nun weiß ich wann ich welche Methode nutzen muss. :)

 

EDIT:

mhh..

Die Logik habe ich nun verstanden.

Problem ist nur, dass der Player nun stottert.

Ich vermute, da die feste Zeit die für FixedUpdate-Methode irgendwie zu hoch ist ?

Oder liegt das nun an etwas anderem ?

 

Also:

Ich prüfe in der Update-Methode die Key-Inputs und setze ebenfalls die Animationen in der Update-Methode.

 

In der FixedUpdate-Methode habe ich nun den CharacterController, bzw den Player (das GameObject) und bewege dieses mit der characterController.Move-Methode.

 

Ich schau mir mal eben die Move-Methode in der API an.

Okey.

 

Attempts to move the controller by motion, the motion will only be constrained by collisions. It will slide along colliders. CollisionFlags is the summary of collisions that occurred during the Move. This function does not apply any gravity.

Das heißt also, dass ich die Move-Methode immer noch in der Update-Methode abfangen soll und die Neuberechnung der Gravity in der FixedUpdate-Methode aktualisiere?

Richtig ?

 

EDIT2:

InputCheck();

Move();

SetAnimation();

 

Sind nun in der Update-Methode und

void FixedUpdate()
   {
    moveDirection.y -= gravity;
   }

berechnet die y-Koordinate durch die Aniehungskraft neu.

 

Funktioniert wunderbar.

Hoffentlich ist das auch so richtig ?! :unsure:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...