# Genaue Wegpunktansteuerung



## Network (23. Jul 2011)

Hi,

Ich habe ein Spiel programmiert nach einem Tutorial dessen Link ich hier nicht mehr finden kann.
Meine Spielfigur soll sich jeweils um ein Spielfeld nach rechts/oben/links/unten bewegen, also immer ca. 60 Pixel in eine Richtung bewegt werden.

Damit die Bewegung flüssig verläuft wird im Tutorial diese Methode beschrieben:
(long delta = vergangene Spielzeit)

```
private void move( long delta ) {
		if( speedH != 0 ) {
			x += speedH*(delta/1e9);
		}
		else if( speedV != 0 ) {
			y += speedV*(delta/1e9);
		}
	}
```

Wenn aber der Computer mal hängen bleiben sollte wird die Spielfigur weit über ihr Ziel hinausgeschossen.
Und nach der Zeit verschieben sich die Spielfiguren auch immer mehr und mehr und mehr... vieleicht nur um ein Pixel, aber da dass Spielfeld aus Feldern besteht kann dass sehr nervig werden.

Kennt da jmd. eine ganz genaue Ansteuerung die genauso flüssig abläuft?

Vielen Dank


----------



## SlaterB (24. Jul 2011)

die Figur bewegt sich nur dann wenn der Computer auch arbeitet, und dann hast du die volle Kontrolle,
wenn 60 Pixel zu gehen sind, mit einer angenommenen Geschwindigkeit von 10, so dass bei Updates alle 20 ms nach 6x 20 = 120 ms das Ziel in etwa erreicht werden sollte,
dann gibt es bei einem angenommenen 'hängen bleiben' von 500 ms keinen Grund, nun gleich 250 Pixel zu verschieben,
du kannst vielleicht ausrechnen dass es nach dem Zeit-delta so sein müsste, aber du kannst genauso gut wissen dass nach 60 Pixeln das Ziel erreicht ist und dann stoppen oder was auch immer, ob genau zum passenden Zeitpunkt oder eben erst später,

wenn es keinen vorgegebenen Pfad gibt sondern jede Bewegung von User-Eingaben abhängt, dann ist die schlechte Bewegung normal, 
dasselbe Problem haben Milliarden-schwere Internetspiele


----------



## Network (24. Jul 2011)

Ok Danke.
Ein Pfad ist selbstverständlich vorgegeben, selbst wenn es nur 30 Pixel nach rechts zum Bsp sind.
Die Anpassung der Geschwindigkeit, sodass dass Ziel genau erreicht wird, bemerkt man leider zu stark und ein leichtes Zittern ist sichtbar.

Ich passe jetzt jedoch nachdem der letzte Wegpunkt erreicht wurde, die Koordinaten der Spielfiguren mit dem letzten Wegpunkt an. Das sieht sehr komisch aus, wenn durch die Figur dochmal bis zu 2/3Pixel zuweit verschoben ist, aber hilft.

Trotzdem kreige ich immernoch nicht das System hinter Computerbrettspielen oder anderen ZugFürZug basierten Spielen heraus.


----------

