docdum Geschrieben 20. Juli 2017 Melden Share Geschrieben 20. Juli 2017 Hallo, ich komme gerade nicht weiter, und denke es ist besser doch mal zu fragen. Ich habe jetzt so quasi gefühlt jede Möglichkeit via Code ausprobiert. GameObject.Instantiate(_RObj, _RSpawnL.position, _RSpawnL.rotation).transform.SetParent(_RSpawnL, true); Dies ist mein Code mit dem ich mein Objekt im Player/EmptyFürPosition/Rakete erzeuge. Das Funktioniert jetzt auch genau an der Stelle. Mit diesem Code auch: GameObject _rocketLCrea = Instantiate(_RObj, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity) as GameObject; //_rocketLCrea.transform.position = ; //_rocketLCrea.transform.rotation = ; _rocketLCrea.transform.parent = _RSpawnL; Allerdings bewegen die Raketen die ich auf diese Weise erstelle nicht synchron mit dem Spieler. Gibt es da was zu beachten, was ich noch nicht gefunden habe? -- Theoretisch sollte das doch wie in der Beschreibung von Unity funktionieren? Gruß docdum Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. Juli 2017 Melden Share Geschrieben 20. Juli 2017 Was meinst du mit "nicht synchron zum Spieler"? Sollte dein Spieler animiert sein, dann musst du die Rakete unterhalb eines Skeleton Bones (z.b. Hand) ablegen und nicht unter dem Spielertransform direkt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
docdum Geschrieben 20. Juli 2017 Autor Melden Share Geschrieben 20. Juli 2017 Also ich nutze keine Bones. Es ist ein Mesh mit einem Empty und darin wird die Rakete erzeugt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
mircojanisch Geschrieben 20. Juli 2017 Melden Share Geschrieben 20. Juli 2017 Also zunächst kanns du erstmal aus ... vor einer Stunde schrieb docdum: ...Instantiate(_RObj, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity)... ...auch... ...Instantiate(_RObj, transform.position, Quaternion.identity)... ...machen. Dann ist die Frage, ob dein "_rocketLCrea"-Objekt welches zu erzeugst, viellaucht auch durch irgendwelche andere Scripte oder Animationen vielleicht bewegt wird. Und wenn ja via Script, ob auch in der FixedUpdate-Funktion bzw. die Bewegung (wenn in der Update) mal Time.deltaTime multipliziert wird? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. Juli 2017 Melden Share Geschrieben 20. Juli 2017 Ich kenne deinen Code nicht, vielleicht hängen noch andere Skripte an den Raketen, die diese modifizieren nachdem sie gespawnt sind. Ansonsten sollten sich Childobjekte normal mit bewegen, wann der Parent bewegt wird. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
docdum Geschrieben 20. Juli 2017 Autor Melden Share Geschrieben 20. Juli 2017 Im Script vom Spieler Also gegenwärtig sieht der Code so aus: //start vom Spieler //create Rockets in Parent of Player -- RSPAWN GameObject.Instantiate(_RObj, new Vector3(_RSpawnL.position.x, _RSpawnL.position.y, _RSpawnL.position.z), Quaternion.identity).transform.SetParent(_RSpawnL, true); GameObject.Instantiate(_RObj, new Vector3(_RSpawnL.position.x, _RSpawnL.position.y, _RSpawnL.position.z), Quaternion.identity).transform.SetParent(_RSpawnR, true); void FixedUpdate () { //moving player float _moveHorizontal = Input.GetAxis ("Horizontal"); //joypad/keyboard input Vector3 _movement = new Vector3 (-_moveHorizontal, 0.0f, 0.0f); //moving axes Horizontal only _RB.velocity = _movement * _SPEED; //left right acceleration _RB.position = new Vector3 (Mathf.Clamp (_RB.position.x, _xMin, _xMax), 0.0f, 0.0f); //limits on the screen _RB.rotation = Quaternion.Euler (0.0f, 0.0f, -_RB.velocity.x * 5f); //rotation when moving left or right _SKYDOME.SkyRotation (_moveHorizontal); } //end fixedUpdate Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. Juli 2017 Melden Share Geschrieben 20. Juli 2017 Schwer zu sagen, wo hier genau das Problem liegt, ich würde mal im Inspektor schauen, ob die Raketen sich dann auch tatsächlich unter dem Spielertransform befinden. Für die bessere Lesbarkeit des Codes würde ich es erst einmal so machen: GameObject newRocketL = Instantiate(_RObj, _RSpawnL.position, Quaternion.identity) as GameObject; newRocketL.transform.parent = _RSpawnL; // Ist hier RSpawnL als Position richtig (oder _RSpawnR) ? GameObject newRocketR = Instantiate(_RObj, _RSpawnL.position, Quaternion.identity) as GameObject; newRocketR.transform.parent = _RSpawnR; // Unterbrechen und schauen wo sich die Childs befinden Debug.Break(); Zudem würde ich zusätzlich schauen, ob sich die Positionen der beiden Child's während des Gameplays verändern, daß sollten sie nämlich nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
docdum Geschrieben 21. Juli 2017 Autor Melden Share Geschrieben 21. Juli 2017 Zer0Cool Danke für die Antwort, die besagten Raketen werden exakt dort erstellt, wo ich ich sie haben will, sie sollen sich aber mit dem Playership und dem Empty was der Parent ist für die Raketen mit bewegen. Das tun sie nicht. Kann es eventuell daran liegen, dass ich die Raketen im Script vom Player erstelle und nicht direkt am Anfang das Prefab für die Raketen in der Herachie einordne? Sorry wegen der späten Antwort. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 21. Juli 2017 Melden Share Geschrieben 21. Juli 2017 Nein, du kannst Childs zu jeder Zeit erzeugen und sobald sie dem Parent untergeordnet werden, wird die relative Position des Childs quasi eingefroren. Bewegst du nun den Parent, dann bewegt sich das Child auf seiner (eingefrorenen) relativen Position mit. Das Einzige was mir noch einfällt wäre, ob evtl. ein RB an den Raketen hängt und der RB die Raketen aus seiner Position zieht... Ist dem so, dann könntest du noch bei dem RB unter Constraints die Position und Rotation fixieren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
docdum Geschrieben 23. Juli 2017 Autor Melden Share Geschrieben 23. Juli 2017 So funktioniert es. Am 21.7.2017 um 15:41 schrieb Zer0Cool: Das Einzige was mir noch einfällt wäre, ob evtl. ein RB an den Raketen hängt und der RB die Raketen aus seiner Position zieht... Ist dem so, dann könntest du noch bei dem RB unter Constraints die Position und Rotation fixieren. Genau so, Danke! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.