Sakura Hanami Geschrieben 12. Juni 2021 Melden Share Geschrieben 12. Juni 2021 Hallo, ich habe mal zum Testen und Einarbeiten in Unity ein kleines Spiel (Sokoban-Clone) erstellt. Während die Geschwindigkeiten des Player im Editor gut eingestellt sind, ist er nach dem Build so schnell. Ich habe ein Playerscript und ein Cubescript. Ich hänge sie bei an. Build Sokoban.mp4 Hat jemand eine Idee woran es liegen könnte? Buildversuche (Windows 32, aber auch 64) Lg Thomas Cube.cs PlayerMovement.cs Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sakura Hanami Geschrieben 12. Juni 2021 Autor Melden Share Geschrieben 12. Juni 2021 Hallo! Ich verstehe es zwar nicht wirklich, aber ich habe jetzt mal die Variablen für das Build neu eingestellt. Nun funktioniert es wieder. //public float walkSpeed = 30; //public float runSpeed = 60; //public float pushSpeed = 40; public float rotationSpeed = 15; private float walkSpeed = 3; private float runSpeed = 6; private float pushSpeed = 4; Die öffentliche Variante verwende ich zum testen und die private Variante verwende ich dann zum builden. Ich verstehe es nur nicht, weil ich doch immer den Korrektur-Faktor Time.deltaTime verwendet habe. LG Thomas Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 12. Juni 2021 Melden Share Geschrieben 12. Juni 2021 Möglicherweise hattest du die public Variablen im Inspector geändert und damit dann Dinge getestet. Und später hast du im Code die public Varablen neu gesetzt und gedacht, dass diese neuen Werte im Code auch dann genutzt würden. Das ist aber so nicht. Wenn du Public Variablen im Inspector änderst, dann gelten diese Änderungen, egal wie oft du danach im Code andere Werte reinschreibst. Du kannst aber im Inspector die Werte resetten. Aber Obacht! Es ist dann wirklich alles so wie im Code. Auf die Schieberegler mal rechts drauf klicken und reset auswählen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 12. Juni 2021 Melden Share Geschrieben 12. Juni 2021 Ich hab mal drüber geschaut und kann bestätigen, dass Time.deltaTime korrekt verwendet wird. Ist nicht 100% deterministisch, da du nicht FixedUpdate benutzt, aber es sollte immer noch einigermaßen gleich sein. Von daher ist @malzbies Theorie, dass das etwas mit den Werten zu tun hat, die im Editor eingestellt wurden, schon sehr gut. Ich wundere mich aber etwas, weil du eigentlich im Editor und im Build die gleichen Ergebnisse sehen solltest. Egal, was du mit deinen Werten so angestellt hast. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sakura Hanami Geschrieben 12. Juni 2021 Autor Melden Share Geschrieben 12. Juni 2021 Vielen Dank für eure Hinweise und auch eure Zeit, dir ihr für mein Anliegen genommen habt! LG Thomas Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sakura Hanami Geschrieben 12. Juni 2021 Autor Melden Share Geschrieben 12. Juni 2021 vor einer Stunde schrieb Sascha: Ich hab mal drüber geschaut und kann bestätigen, dass Time.deltaTime korrekt verwendet wird. Ist nicht 100% deterministisch, da du nicht FixedUpdate benutzt, aber es sollte immer noch einigermaßen gleich sein. Von daher ist @malzbies Theorie, dass das etwas mit den Werten zu tun hat, die im Editor eingestellt wurden, schon sehr gut. Ich wundere mich aber etwas, weil du eigentlich im Editor und im Build die gleichen Ergebnisse sehen solltest. Egal, was du mit deinen Werten so angestellt hast. Ich habe jetzt mal die Input-Abfragen in die Update-Funktion gepackt und FixedUpdate übernimmt nun allein die Physik. Es läuft sogar wesentlich ruhiger und das Build-"Problem" ist damit auch behoben. Vielen Dank für deinen wertvollen Hinweis. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sakura Hanami Geschrieben 12. Juni 2021 Autor Melden Share Geschrieben 12. Juni 2021 vor 2 Stunden schrieb malzbie: Möglicherweise hattest du die public Variablen im Inspector geändert und damit dann Dinge getestet. Und später hast du im Code die public Varablen neu gesetzt und gedacht, dass diese neuen Werte im Code auch dann genutzt würden. Das ist aber so nicht. Wenn du Public Variablen im Inspector änderst, dann gelten diese Änderungen, egal wie oft du danach im Code andere Werte reinschreibst. Du kannst aber im Inspector die Werte resetten. Aber Obacht! Es ist dann wirklich alles so wie im Code. Auf die Schieberegler mal rechts drauf klicken und reset auswählen. Das ist ein guter und praktischer Hinweis. So habe ich meine vorgegebenen Werte und kann aber darüber hinaus mit Werten experimentieren. Ist schon Wahnsinn wie gut solche Programme durchdacht sind! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.