Godot 4 get und set position von einem characterbody 2d?
Global position funktioniert da irgendwie nicht. es ist mir wichtig, das die position des spielers im spielercode ermittelt wird und auch "gesetzt" werden kann.
Wie mache ich das am besten?
var a = player.get_global_position
player.set_global_position(a)
geht wie gesagt nicht, vermutlich weil es nicht in der world ist.
1 Antwort
kommt drauf an, was du damit machen willst - wenn du die Position des Spielers in einer Scene ermitteln willst:
var pos: Vector2 = player.global_position
player.global_position: Vector2 = pos
aber richtig Sinn macht das nicht - außer du willst in von einem anderen Script oder Node auf die position zugreifen
du kannst das Ganze natürlich auch mit position, anstatt mit global_position machen - schreib mal genau, was du vorhast - das kann man besser helfen
Ah ok - nur um zu verstehen - deine einzelnen Welten sind jeweils eine Scene (inklusive SpielerNode und was man sonst so sieht und braucht und pipapo) - und sagen wir ma der Spieler steht auf global_position(100, 100) in Welt_02 rum und genau dieser Wert (Spielerposition(100, 100) soll auch an Welt 3 weitergegeben werden?
äh nein, nicht ganz. kommt darauf an welche welt. das pause menü ist in deinem beispiel welt 3. bei der richtigen welt 3 spawnt er natürlich bei vector 0 0
Ok :-) jetzt blick ich nicht mehr durch - beschreib mal genau - also wirklich Schritt für Schritt...was gemacht wird - also für Aussenstehende bzw Dumpfbacken wie mich - am Besten anhand einer Szene....
ich bin in einem spiel. spawne auf der map am anfang. dann drücke ich pause. nachdem ich die pause entfernt habe, spawne ich wieder am anfang der map. ich sollte aber am gleichen ort sein wie vor dem pause drücken. das pause menü ist eine eigene datei (also change scene pause) in meinem fall.
Ah ok - ich denke, dass ich es kappiert habe - du kannst die Position des Spielers in einem globalen Script speichern - als Singleton. Dafür legste erstmal n Script an - kein Node oder so - wirklich nur ein Script - in diesem Fall kannste es "Globals.gd" nennen - gehst bei Project (ganz oben) - auf Project Settings - Autoload - lädst das Script und klickst anschließend auf "Add" - nun kannst von jeder Scene, jedem Node etc genau darauf zugreifen.
Dann legste ne Variable in dem globalen Script an - nennst sie zB "var global_pos: Vector2" - wenn du nun auf Pause drückst übergibst du die Postition des Spielers an diese globale variable - "Globals.global_pos = player.global_position" - "wenn die Szene nach der Pause wieder geladen wird - kannst du mit der _ready() Funktion, die dort hinterlegte Position abfragen und an den Spieler übergeben
ich möchte die spieler position in einem spiel mit mehreren welten ermitteln und bei pause oder menü abfragen wo die position ist und sie dann wieder abrufen. das der spieler nicht am anfang ständig spawnt.
deshalb muss diese abfrage im spielercode sein, weil ich sonst in jeder welt neu ermitteln muss.
vielleicht gibt es ja irgendwas mit get tree was über den spieler tree hinausragt um trotzdem noch eine abfrage die im spieler skript zu haben.