1 Pluspunkt 0 Minuspunkte

In der Funktion _physics_process setze ich die Position des Player mit move_and_slide und über einen RPC synchronisiere ich die Position.

rpc("remote_set_position", global_position)

In remote_set_position setze ich die global_position entsprechend der übergebenen Position.

@rpc 
func remote_set_position(authority_position):
    global_position = authority_position

Das Problem ist das der Player für andere extrem stark wackelt. Ich habe es auch schon mit den verschiedenen Parametern für die RPC Annotation versucht.

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst dem Player eine neue Variable target_position geben.

var target_position: Vector3

Im RPC setze

target_position = authority_position

Die Bewegung kannst du dann in _physics_process verarbeiten wenn du NICHT Multiplayer Authority bist, also nur auf remote Playern.

global_position = global_position.lerp(target_position, 10 * delta)

von (884 Punkte)  
Die Zeile global_position = authority_position kann ich im RPC dann weglassen, oder?
Ja die kannst du durch

target_position = authority_position

ersetzen.