Planeten Gravitation

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Abenteurer036

Betreff: Planeten Gravitation

BeitragDo, Okt 13, 2011 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo alle,

stehe wieder for einem Problemchen. Ich würde gerne meinen Typ über einen runden Planeten laufen lassen. Hab mir schon viele Gedanken gemacht wie das mit der Gravitation hinhauen könnte. Mit dem normalen Translateentity gehts nicht. Der Typ soll auch über Berge bzw. Hügel laufen können.

*Klick*

Wie auf der netten kleinen Grafik gezeigt wird, hatte ich vor in der mitte ein Cube oder sonstiges zu platzieren und da dann die Translation rüber laufen zu lassen. Ich hab blos keine Ahnung wie.

Hab mir heute den halben Tag den Kopf drüber zerbrochen, ich weis das ist nicht viel aber vielleicht habt ihr ein paar Tipps für mich. Nachdem ich mich verbessern will reichen Tipps aus, ich will keinen fertigen Code bitte.

Also wer Ratschläge/Tipps/Anregungen hat die er mir verraten will, bitte posten Smile

MfG Abenteurer036
New Project [4%]
Schinken Maker [100%]
 

bjh

BeitragDo, Okt 13, 2011 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

du musst deine figur einfach nur immer in richtung planetenmittelpunkt drehen und dann kannst du mit moveentity mann,0,-gravitation,0 gravitation erzeugen.

das sollte gehen

Xeres

Moderator

BeitragDo, Okt 13, 2011 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du nur eine Kugel hast, kannst du die unter dem Spieler drehen, anstatt den Spieler zu bewegen oder du benutzt Sin/Cos Rechnungen für 3D, z.B. siehe hier.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragDo, Okt 13, 2011 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wenn da mehr zeug da is, würd ich lieber den mann drehen als alles andere

Abenteurer036

BeitragDo, Okt 13, 2011 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, habe leider mehr als nur die Kugel. Werd das mit Moveentity ausprobieren, melde mich wenn ich schwierigkeiten bekomme.

Danke!
New Project [4%]
Schinken Maker [100%]
 

PhillipK

BeitragDo, Okt 13, 2011 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
*edit: Mist*

Hatte grade in einem 2d fall rumhantiert.

Da das ganze 3d ist, wirds ein wenig einfacher *finde*

Ich würde in die richtung forschen:

Pivot in die mitte des Planten setzen. Spieler als Child vom Pivot festsetzen. Spieler etwas "überhalb" des planeten setzen und so drehen, das er nach "unten" zum Planeten zeigt. Nun kannst du den Pivot drehen, statt den spieler zu steuern - und per kollision die höhe bestimmen (bzw mit einem Pick - in jedem frame den spieler etwas auf (y glaube ich) nach oben schicken und mit einem pick die position bestimmen)

Das ganze geht auchnoch viel sauberer, aber irgendwas muss ich aus dem dummen edit hier ja machen Very Happy
 

BIG BUG

BeitragDo, Okt 13, 2011 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso "dummer edit"? Deine vorgeschlagene Lösung ist definitiv was für die engere Auswahl.
Weitere Möglichkeiten:
-Pivot in die Mitte und Spielerobjekt mit PointEntity ausrichten(hier müsste dann der Spieler aber um die Z-Achse um 90° gedreht werden)
-AlignToVector benutzen(praktischer Weise ist der Vektor schlicht Deine Spielerposition im Raum wenn der Planet auf dem Nullpunkt liegt)...
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

PhillipK

BeitragFr, Okt 14, 2011 6:16
Antworten mit Zitat
Benutzer-Profile anzeigen
BIG BUG hat Folgendes geschrieben:
Wieso "dummer edit"? Deine vorgeschlagene Lösung ist definitiv was für die engere Auswahl.


Ich hatte den Thread gelesen und mich gleich drangesetzt, das ganze in 2d durchzuspielen. Dementsprechend auch geantwortet, bis ich nochmal genauer hingeschaut hatte und die 3d haftigkeit dieses Threads bemerkt habe^^

Deshalb: Dummer Edit Very Happy

Abenteurer036

BeitragFr, Okt 14, 2011 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Phu... keine Ahnung, hab jetz verschiedenes ausprobiert und nix hat so wirklich geklappt:

1.) Versuch
Dem Spieler einen Pivot als Parent gegeben(P1) und 20 weg noch ein Pivot gesetzt(P2) der sich immer genau in gegenrichtung bewegt.

P1 10
|
|
| 0
|
|
P2 -10

Dieser Versuch ist gescheitert da ich P2 irgendwie nicht dazu bringen kann P1 anzuziehen.


2.) Versuch

Das gleich blos ohne P2. Hab auch da versucht das der 0 Punkt P1 anzieht, leider hat das auch nicht geklappt bzw. ich weis nicht wie.


3.) Versuch

Der Spieler bleibt an Ort und Stelle stehn nur der Planet dreht sich und Dank TranslateEntity zieht es den Spieler immer gegen die Planetenoberfläche. Klappt bei der Y Rotation, doch bei X und Z fällt er neben runter.

Mir fällt absolut nichts mehr ein Sad
New Project [4%]
Schinken Maker [100%]

biggicekey

BeitragFr, Okt 14, 2011 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit "AlligntoVector" funktioniert es schon ganz gut. Steuerung mit den Pfeiltasten.

BlitzBasic: [AUSKLAPPEN]
Graphics3D 800,600
SetBuffer BackBuffer()

light=CreateLight();Es werde Licht

cam=CreateCamera()
MoveEntity cam,0,0,-5

world=CreateSphere()
EntityColor world,0,200,0
EntityType world,2

player=CreateCube()
EntityColor player,255,0,0
ScaleEntity player,.1,.2,.1
MoveEntity player,0,2,0
EntityType player,1
EntityRadius player, .2

Collisions 1,2,2,2

timer=CreateTimer(60)

While Not KeyHit(1)
WaitTimer(timer)

AlignToVector player,EntityX(player),EntityY(player),EntityZ(player),2
If EntityCollided(player,2)=0
MoveEntity player,0,-.01,0
EndIf

If KeyDown(200)
MoveEntity player,0,0,.1
EndIf
TurnEntity player,0,KeyDown(203)-KeyDown(205),0

UpdateWorld()
RenderWorld()

Flip 0

Wend

End
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Midimaster

BeitragFr, Okt 14, 2011 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@biggicekey

Cool ich sehs! aber ich raffs nicht! Ich dachte bis jetzt, ich hätte AlignToVector() verstanden. Und dann kommtst Du und richtest ein Objekt an sich selber aus? Und Du brauchts noch nicht mal das Entity Erde dazu, um es um die Erde kreisen zu lassen. Sonderbar! Genial! Wie kommt man auf sowas?

Kann man erklären, was da math. passiert? Hat es damit zu tun, dass der World-Ursprung genau auf dem Ursprung (0/0/0) ist? Ach ja, logisch Surprised der "Vektor" ist ein Vektor vom Ursprung zum Player. und du passt die y-Achse des Players neu an. Genial! Wenn sich der Player ein wenig in z-Richtung bewegt hat, dann zeigt seine y-Achse nicht mehr ganz genau auf den Ursprung. Der Vektor von Ursprung zu ihm aber schon noch. Und die World-Koordinaten des Players entsprechen diesem Vektor. Danke!
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Abenteurer036

BeitragFr, Okt 14, 2011 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked oha...

wollte zwar keinen fertigen Code aber ich bin begeistert. Es ist sogar für mich verständlich... teilweise aber gut.

Zitat:
Und dann kommtst Du und richtest ein Objekt an sich selber aus? Und Du brauchts noch nicht mal das Entity Erde dazu, um es um die Erde kreisen zu lassen. Sonderbar! Genial! Wie kommt man auf sowas?


Ja, ich bin auch platt.

Naja Danke jedenfalls, werde am Code rumwerkeln, versuchen ihn vollständig zu verstehn und euch anschließend das Resultat zeigen.

MfG Abenteurer036
New Project [4%]
Schinken Maker [100%]

biggicekey

BeitragFr, Okt 14, 2011 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Objekt wird nicht wirklich an sich selbst ausgerichtet. Es funktioniert nur wenn der Planet auf dem Ursprung des koordinatensystems liegt wie BIGBUG oben schon angemerkt hat und ihr jetzt auch festgestellt habt.

Nachfolgend nochmal mit beliebiger Planetenkoordinate. Sollte immer noch selbsterklärend sein. Im Prinzip auch immer noch das gleiche, es machte gerade Spaß daran zu basteln. Mit "Space" kann man jetzt auch springen.

BlitzBasic: [AUSKLAPPEN]
Graphics3D 800,600
SetBuffer BackBuffer()

AppTitle "Super Cube Galaxy"

light=CreateLight();Es werde Licht
TurnEntity light,0,45,0

cam=CreateCamera()
MoveEntity cam,0,0,-5

world=CreateSphere()
EntityColor world,0,200,0
EntityType world,2
MoveEntity world,2,0,0

player=CreateCube()
EntityColor player,255,0,0
ScaleEntity player,.1,.2,.1
MoveEntity player,0,2,0
EntityType player,1
EntityRadius player, .2
Global playeryspeed#

Collisions 1,2,2,2

timer=CreateTimer(60)

While Not KeyHit(1)
WaitTimer(timer)

AlignToVector player,EntityX(player)-EntityX(world),EntityY(player)-EntityY(world),EntityZ(player)-EntityZ(world),2
If EntityCollided(player,2)=0
playeryspeed=playeryspeed-0.002
Else
playeryspeed=0
EndIf

If KeyHit(57)
playeryspeed=0.05
EndIf

MoveEntity player,0,playeryspeed,0

If KeyDown(200)
MoveEntity player,0,0,.02
EndIf
TurnEntity player,0,(KeyDown(203)-KeyDown(205))*3,0


UpdateWorld()
RenderWorld()

Flip 0

Wend

End
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Abenteurer036

BeitragFr, Okt 14, 2011 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Coole Sache Cool

Ich bastel schon ne weile an deinem alten Code rum. Wie hast dus bei dem neuen geschafft das der Cube nicht immer rutscht, wenn man ihn bewegt? Bei Collisions hat sich ja nichts geändert.
New Project [4%]
Schinken Maker [100%]

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group