Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.06.2013, 13:00

2d character steuerung

Hallo,
Ich arbeite in meiner Freizeit an einem kleinen Projekt in Unity und stecke leider fest.

Der Player soll sich auf der Außenseite eines flachen Planeten bewegen.
Leider funktioniert keiner meiner Lösungsansätze da die meisten controll Scripts eingebaute gravity-Regeln haben oder horizontal berechnet werden.

Für die Gravität sorge ich mit:

Quellcode

1
rigidbody.AddForce((planet.transform.position-transform.position).normalized*gravity);




(Link)



(Link)


Meine scripting-Wissen ist schlecht bis kaum vorhanden

Vielen Dank im voraus

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

20.06.2013, 13:46

Das kommt ein wenig darauf an was du machen möchtest. Wenn der Spieler immer gerade angezeigt wird, könntest du einfach die Welt unter ihm drehen. Im Prinzip kannst du die Welt mit ihren Objekten unter einem Empty zusammen fassen und dieses Emptyobjekt dann einfach rotieren wenn der Spieler sich bewegt. Dadurch wirkt es so als würde der Spieler sich über die Oberfläche bewegen, eigentlich wird aber nur die Welt bewegt. Möchtest du dass sich der Spieler wirklich rund um das Objekt bewegt ohne die Welt drehen zu müssen, kannst du die Richtung der Gravitation anpassen. Ich bin mir grad nicht sicher ob man bei Unity für die Gravitation einen Richtungsvektor setzen kann, wenn ja musst du ja nur das machen. Die Richtung ist dann vom Spieler zum Planetenkern gerichtet. Das solltest du vermutlich hinkriegen. Wenn das nicht direkt geht ist es auch nicht sonderlich schwer die Gravitation selbst zu berechnen. Die Richtung kannst du berechnen und ansonsten brauchst du nur ein klein wenig Physik um dein Ergebnis zu erziehlen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

3

20.06.2013, 15:34

Danke für deine schnelle Hilfe!
Einfach den Planeten zu drehen ist keine schlechte Idee... passt aber leider nicht ins Spielprinzieb. Denn man soll den Planeten auch verlassen können. Das würde bedeuten, dass ich das Weltall mitdrehe. Funktioniert leider nicht.

Der Player wird bereits Richtung Planetenkern gezogen.

Das eigentliche Problem ist meine Unfähigkeit den Player jetzt vorwärts oder rückwertz zu bewegen...

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

20.06.2013, 16:10

Wenn der Spieler zum Planetenkern gezogen wird und du ihn so drehst, dass er gerade auf dem Planeten steht, dann sollte es reichen wenn du den Spieler einfach vorwärts bzw rückwärts bewegst. Danach wird er wieder so rotiert, dass er passend auf dem Planeten ausgerichtet ist und die Gravitation zieht ihn auf den Planeten. So würde ich es spontan probieren.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

5

20.06.2013, 18:30

Danke, aber wie schon erwähnt, ist genau das mein Problem.

Ich bin nicht in der Lage die Lösung selber zu generieren und bin seit etlichen Tagen auf der Suche nach einer Lösung.

Ich verstehe ja das schon aus Prinzip nicht gerne 'copy and paste' Lösungen angeboten werden.
Aber für jemanden der keine Ahnung vom Programmieren hat wird es so mehr als schwer an eine Lösung zu kommen.
Ich möchte nicht das andere die Arbeit für mich machen!

Ich bin und war schon immer hilsbereit wenn jemand Hilfe bei
Texturen/Materials
Bump/normal maps
lightmaps
High maps
Specula maps
oder auch beim UV oder weiht Painting benötigte.

Davon verstehe ich was. Aber nicht vom Programmieren.
Ein Wink in die richtige Richtung hilft mir nicht.

Deswegen bitte ich nochmal um Hilfe

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

20.06.2013, 18:45

Du kannst dir von deinem Transform Objekt einen Forward bzw Backward Vektor geben lassen soweit ich das richtig im Kopf habe. Das sind die Richtungsvektoren in die jeweiligen Richtungen von deinem Charakter aus, wobei die aktuelle Rotation betrachtet wird. Wenn du diesen nun mit deiner Geschwindigkeit multiplizierst hast du was du suchst.

edit: http://docs.unity3d.com/Documentation/Sc…rm-forward.html Das ist der Teil dazu aus der Unity Referenz. Die finde ich oft recht hilfreich.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige