Unity 2D, C#: Warum ruckelt der Hintergrund des Spieles?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Ich kann kein Unity, aber ich versuch's mal.

Du hast da stehen "KeyCoed.D" (zwei Buchstaben vertauscht). Ich vermute im echten Code steht es richtig.

Du fragst bei "Bei dem Spieler:" und "Bei dem Hintergrund:" zwei Mal dieselben Tasten ab. Kannst du das auf 1x reduzieren?

if(Input.GetKey(KeyCode.D)){
   transform1.Translate(7 * Time.deltaTime, 0, 0);
   transform2.Translate(6.5f * Time.deltaTime, 0, 0);
}
if(Input.GetKey(KeyCode.A)){
   transform1.Translate(-7 * Time.deltaTime, 0, 0);
   transform2.Translate(-6.5f * Time.deltaTime, 0, 0);
}

Denn wenn du die Eingabe an zwei Stellen prüfst, ist vermutlich Time.DeltaTime auch immer anders. Daher vllt das Geruckel.

Ich hab's außerdem abgeändert auf transform1 und transform2 weil's ja verschiedene Objekte sind. Ich weiß leider nicht, wie du an dieser Code-Stelle an beide rankommst.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer
Tjovo 
Fragesteller
 27.04.2021, 18:08

Meinen Sie z.B. so (Mir fällt nichts anderes ein):

Spieler:

public float ChangePosition;

void Update(){
if(Input.GetKey(KeyCode.D)){
transforn.Translate(7 * Time.deltaTime, 0, 0);
ChangePosition = time.deltaTime;
}
}

Hintergrund:

public GameObject SpielerObject;
public Spieler Spieler;
void Start(){
Spieler = SpielerObject.GetComponent<Spieler>();
}
void Update(){
if(Input.GetKey(KeyCode.D)){
transform.Translate(Spieler.ChangePosition, 0, 0);
}
}

Aber das ändert logischerweise auch nichts.

0
DonkeyShot  27.04.2021, 18:10
@Tjovo

Nein, aber eine bessere Lösung habe ich leider nicht. Warte mal ab, ob noch jemand anderes hilft. Wenn nicht, kannst du die Frage ja nochmal reinstellen.

0
Tjovo 
Fragesteller
 27.04.2021, 20:17
@DonkeyShot

Aber danke! Trotzdem weiß ich jetzt ein bisschen mehr über "Time.deltaTime"

ヾ(≧▽≦*)o

0