So mache ich eine einfache 2d endlosen mobilen Spiel. In dem Spiel bewegt sich das Spielerobjekt (Raumschiff) kontinuierlich aufwärts und dann kann der Spieler entweder links oder rechts den Spieler bewegen, um Hindernissen auszuweichen.effizienteste Weg, um eine sehr glatte Spieler Bewegung in Unity5
Als Neuling finde ich es sehr schwierig, eine sehr glatte Bewegung in der Spielerbewegung zu erreichen. Ich habe mir viele Tutorials angeschaut, einschließlich der offiziellen Tutorials über das Bewegen eines Objekts. Sie alle nutzen einfache Techniken wie:
rigidbody.velocity = (new Vector2 (0.0f, 1.0f)) * speed
in der fixedupdate Funktion
oder transform.Translate (velocity * Time.deltaTime * speed)
in der Update-Funktion
oder rigidBody.MovePosition (rigidbody.position + velocity * Time.fixedDeltaTime)
im Fest Update oder
nur die Änderung nur die transform.position
im Laufe der Zeit in der Update-Funktion.
Aber keine dieser Techniken oder Code, den ich verwendet habe, hat mir geholfen, diese sehr glatte Bewegung in der Spielerbewegung zu erreichen, die ich will. Egal was ich versuche, ich bekomme immer noch Verzögerungen in der Spielerbewegung. Ich habe auch versucht, die rigidbody.iskinematic auf und von und die Starrkörper-Interpolation zu ändern, aber ich bin immer noch nicht in der Lage, eine glatte Bewegung in 2d Spiele zu erreichen, die wir wie ios games shredd or split the dot sehen. Ich dachte, dass es mein Computer wäre, der sehr langsam ist oder etwas, weshalb ich keine sanfte Bewegung bekomme, aber ich transportierte mein Projekt auf meinen Computer, der doppelt so schnell ist und ich habe immer noch die gleichen Ergebnisse. Ich streifte auch alles, was sich dazu entschieden hat, den gesamten Code, der in den Player-Controller-Skripten ist, zu löschen und mich nur auf den Code zum Verschieben des Players zu konzentrieren, aber die Ergebnisse haben sich nicht geändert.
Ich denke, dass es ist, weil ich nur einen sehr einfachen und ineffizienten Code verwende, um den Player zu bewegen, oder es könnte etwas mit dem Ändern einiger Einstellungen in Einheit zu tun haben. Die Frage ist also, welcher der effizienteste Weg ist, um eine sehr glatte Spielerbewegung in Einheit zu erreichen. (Codebase und Einheitseinstellungen.)
Momentan benutze ich nur rigidbody.velocity = (new Vector2 (0.0f, 1.0f)) * speed
, um den Spieler zu bewegen, und ich habe die Kamera ein Kindobjekt des Spielers für die Einfachheit gemacht.
Vielen Dank.
Haben Sie versucht, übersetzen mit vector2 'transform.Translate (neue Vector2 (0, 1) * moveSpeed * Time.deltaTime);'. Ich habe empfohlen, die fps auf deiner GUI anzuzeigen, damit du weißt, ob dein gesamtes Spiel nachläuft oder ob es nur dein Player ist. Wenn Ihr gesamtes Spiel nachlässt, dann gibt es ein Profiling dort zu machen ... –
BTW, da dieser Code 'Time.deltaTime' verwendet, sollte es innerhalb der' Update' Methode sein. –
Wo ist dein Code, praktisch, um das aufzustellen, was du hast, das nicht glatte Resultate gibt. Es könnte mit der Größe Ihres Objekts tun und die Menge ist weniger als die Menge, die Sie im Laufe der Zeit bewegen. Bewegt sich Ihre Kamera mit dem Objekt? –