Jump to content
Unity Insider Forum

Movementspeed im Editor und Build Version unterscheidet sich Stark


Recommended Posts

Moin moin!

ich habe gerade festgestellt das sich mein Player im Build wesentlich schneller bewegt. Im Editor ist er relativ langsam und in der Buildversion ist er ruckzuck weg von Screen ^^

Woran könnte das liegen? Am Code Wahrscheinlich nicht oda?

private void FixedUpdate()
{
    rigid.velocity = moveValue;
}

public void OnMove(InputAction.CallbackContext context)
{
	moveValue = context.ReadValue<Vector2>() * speed * Time.deltaTime;
}

 

Link to comment
Share on other sites

Geht zwar, aber nein - Einfach gar nichts nehmen. Du hast hier eine Geschwindigkeit, die du setzt. Diese Geschwindigkeit brauchst du nicht mit irgendeinem DeltaTime-Wert zu multiplizieren. Dass es jetzt in Build und Editor gleich ist, liegt daran, dass fixedDeltaTime (quasi) eine Konstante ist. Es ergibt aber keinen Sinn, sie draufzumultiplizieren.

Einfach

moveValue = context.ReadValue<Vector2>() * speed;

 

Link to comment
Share on other sites

achso ok .. man sieht im Netzt oft das die das mit der deltaTime multiplizieren, bzw. mit der fixedDeltaTime ... je nach Update Methode.

War eigentlich auch immer etwas skeptisch weil die FixedUpdate ja Framerate unabhängig sein soll, habs dann aber doch einfach so nachgemacht. Aber gut dann lassen wa das einfach weg, danke!

Link to comment
Share on other sites

vor 3 Minuten schrieb Jolly Roger:

achso ok .. man sieht im Netzt oft das die das mit der deltaTime multiplizieren, bzw. mit der fixedDeltaTime ... je nach Update Methode.

Ja, aber es ist wichtig, was man warum macht. Die Multiplikation machst du, wenn du jeden Frame ein bisschen irgendwo draufrechnest, z.B. die Geschwindigkeit auf die Position addierst. "* deltaTime" kannst du als "pro Sekunde" lesen. Wenn du also sagst

private void Update()
{
  position += x;
}

dann heißt das "Ich bewege mich mit x pro Frame", aber

private void Update()
{
  position += x * Time.deltaTime;
}

heißt "Ich bewege mich mit x pro Sekunde".

Wenn du aber velocity, also die Geschwindigkeit setzt, dann ist das schon "pro Sekunde". Weil dein Rigidbody jedes FixedUpdate die velocity nimmt, Time.fixedDeltaTime draufmultipliziert und das Ergebnis auf die Position des Rigidbodys rechnet.

Wenn du also die Velocity setzt und deltaTime draufmultiplizierst, dann machst du "pro Sekunde pro Sekunde", also "pro Sekunde zum Quadrat" und wenn du in Physik aufgepasst hast: Das ist eine Beschleunigung :)

So als Tipp: fixedDeltaTime braucht man tatsächlich nie. Es ist nur dann überhaupt sinnvoll, wenn man es in FixedUpdate benutzt, und da kannst du auch Time.deltaTime benutzen, weil es innerhalb vom FixedUpdate-Kontext immer denselben Wert zurückgibt wie fixedDeltaTime.

vor 9 Minuten schrieb Jolly Roger:

War eigentlich auch immer etwas skeptisch weil die FixedUpdate ja Framerate unabhängig sein soll, habs dann aber doch einfach so nachgemacht. Aber gut dann lassen wa das einfach weg, danke!

Ja, es ist quasi framerate-unabhängig. Nicht im Echtzeit-Sinne, aber man kann es so benutzen. Hier hast du was zum Lesen, wenn du magst: http://blog.13pixels.de/2019/what-exactly-is-fixedupdate/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...