Asteroids ähnliche Steuerung! Probleme!

Coden in GLBasic
Autor
Nachricht
Benutzeravatar
Kolumbus
5 Bit
Beiträge: 42
Registriert: So Jun 17, 2007 11:37
Wohnort: Nordhorn
Kontaktdaten:

Asteroids ähnliche Steuerung! Probleme!

#1 Beitrag von Kolumbus » Sa Okt 06, 2007 13:20

Ich habe in GlBasic ein kleines Flugzeug programmiert mit dem man
über einen leeren Bildschirm fliegen kann. Es ist aber mehr zum experimentieren, denn man kann nicht z.B. nur in 8 Richtungen fliegen sondern in alle. Wenn man Gas los läst fliegt der Flieger weiter und wenn man sich dreht ändert er nicht seine Richtung, sondern erst wenn man dann wieder Gas gibt. Außerdem soll dabei die alte Geschwindigkeit und Richtung mit einbezogen werden(also dass er nicht einfach sofort zu 100 Prozent in die neue Richtung fliegt). Doch momentan ist das ganze ein einziger Fehlschlag.
Letzteres funktioniert gar nicht und die andere Version ist vollkommen verbugt(von der Physik her: bei rotosprite wird der Flieger mit steigendem
Winkel immer schneller und bei 90°,180°,225° und 360° stößt sich der Flieger
an unsichtbaren Wänden ab, was am letzten Programmteil liegt)
Das ganze ist komplett, wenn auch zwischen Tür und Angel(tut mir leid wenn man mir nicht folgen kann), dokumentiert. In der Dokumentation liste ich einige Fehlergründe und Lösungen auf, die ich aber selbst nicht umgesetzt bekomme. Wahrscheinlich habe ich das einfach komplett dämlich programmiert und das ist ganz leicht. :P
Hier der Abschnitt der berechnet um wie viele x und y werte versetzt das Sprite gezeichnet wird:

prozent=speed/(90/winkel)
aenderungy=speed-prozent
aenderungx=0+prozent

Je größer der winkel wird desto kleiner wird das Ergebniss von "90/winkel"
und desto größer wird demnach das Ergebniss von speed/dasAndere.
Bei 90° ist speed-prozent dann 0, aber die Geschwindigkeit steigt immer mit dem Winkel (die Geschwindigkeit nicht der Schub)



Wer sich das mal angucken will dem kann ich den Quelltext, die Doku etc. schicken!
Ein Mathematiker kann mit einem Schneider verglichen werden, der sich nicht darum kümmert, welche Lebewesen auch immer in die Kleider hineinpassen mögen. Es ist eher so, dass sich beileufig eine Lebensform findet, die zu den Kleidern passt als umgekehrt.

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#2 Beitrag von johnnysnet » Sa Okt 06, 2007 16:01

Ich glaube zu wissen, was du genau erreichen möchtest. Die Rechnung verstehe ich jetzt auf Anhieb nicht ganz - ich würde es glaube ganz anders machen. Leider kann ich im Moment nicht helfen, da ich an einem anderen Projekt bin, was möglichst bald fertig werden soll. Aber wenn ich Lust und Zeit habe, und sich das bis dahin noch nicht erledigt hat, kann ich mir das gerne mal angucken und/oder meine Version schreiben.

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#3 Beitrag von johnnysnet » Fr Okt 12, 2007 09:13

Wie sieht das aus, Kolumbus, hat sich das inzwischen schon erledigt oder ist an solch einer Steuerung noch Bedarf?

Benutzeravatar
Zabo
6 Bit
Beiträge: 70
Registriert: Mi Okt 10, 2007 14:40
Wohnort: München
Kontaktdaten:

#4 Beitrag von Zabo » So Okt 14, 2007 16:13

musst du unbedingt ins inet stellen!!!!!!
ich liebe so was
hab auch son marienkäfer, der das gleiche kann (in flash)

http://rapidshare.com/files/62518515/ma ... r.swf.html

brobiert den mal(steuern mit den pfeiltasten)
Geht mal auf
Meine Shisha <-- wenn ihr schon drauf wahrt, geht bidde nochmal (das gibt punkte, mit der ich die shisha pimpen kann) bald sieht meine wieder anders aus. big thx an alle
Meine Homepage

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#5 Beitrag von johnnysnet » So Okt 14, 2007 19:31

Ich kann die Datei leider nicht öffnen aber ist auch nicht so wichtig.

Ich soll unbedingt so eine Steuerung veröffentlichen, verstehe ich richtig? :)

Zabo, verwendest du auch GLBasic?

Benutzeravatar
purestrain
7 Bit
Beiträge: 165
Registriert: Mi Feb 28, 2007 19:30

#6 Beitrag von purestrain » Mo Okt 15, 2007 13:34

Hallo,

Eigentlich ist so eine Steuerung Physik der 6.? Klasse? Vektoraddition, Reibung, Impulskräfte usw. sollten als Stichworte ausreichen.

Gruss
Michael

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#7 Beitrag von johnnysnet » Mo Okt 15, 2007 19:39

purestrain, nicht jeder ist in Mathe so gut drauf wie vielleicht du jetzt. Dabei spielt es erstmal keine Rolle, ob es sich um simple oder weniger simple Berechnungen handelt. Ich z.B. kriege solch eine Steuerung noch hin aber zu mehr reicht es dann schon nicht mehr.

Du solltest dies tolerieren können :wink:

Benutzeravatar
purestrain
7 Bit
Beiträge: 165
Registriert: Mi Feb 28, 2007 19:30

#8 Beitrag von purestrain » Di Okt 16, 2007 07:46

Hallo,

Sicher kann ich dies tolerieren - Und ich bin in Mathematik auch beiweitem nicht gut drauf, ich halte es nur fuer sinnvoller, Stichworte anstelle von Code-Schnipseln zu geben.

Gruss
Michael

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#9 Beitrag von johnnysnet » Di Okt 16, 2007 11:05

Achso, das war dein Punkt! Da magst du recht haben...

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#10 Beitrag von johnnysnet » Di Okt 16, 2007 16:56

So, ich hab mal eben schnell so eine Steuerung gemacht. Für alle, die Interesse daran haben. Wenn es niemand mehr braucht, auch kein Problem, war nicht viel Arbeit ;)

http://www.zshare.net/download/4256071ff10587/

In der Zip-Datei ist das GLBasic Projekt enthalten, einfach in einen Ordner entpacken und die *.gbap im Editor von GLBasic öffnen.

Man kann damit also ein Flugobjekt über den Bildschirm steuern. Je schneller man fliegt, desto träger reagiert es auf Richtungswechsel. Viel Spaß beim rumprobieren :)
Natürlich ist die Steuerung noch nicht optimal und muss sicher weitreichend angepasst werden. Der Code ist noch nicht großartig kommentiert aber ich bitte darum, einfach bei allen Unklarheiten zu fragen, ich will es dann gerne ausführlich erklären.

Benutzeravatar
Kolumbus
5 Bit
Beiträge: 42
Registriert: So Jun 17, 2007 11:37
Wohnort: Nordhorn
Kontaktdaten:

Problem festgestellt

#11 Beitrag von Kolumbus » Fr Okt 19, 2007 15:26

Es gibt noch ein kleines Problem in deinem Programm. Wenn man ganz schnell fliegt, den Flieger dann umdreht und weiter Gas gibt sollte er langsamer werden, wegen dem Gegenschub.
Man muss es dann ja auch rechnerisch schaffen zu berechnen wie der Flieger fliegt, wenn der Flieger nicht nur um 180° zu der alten Richtung Gas gibt sondern schräg. Und daraus muss mann dann eine Art Mittelwert bilden oder sowas, der sich langsam der neuen Richtung anpasst.
Vielleicht schafft das ja noch jemand. :)

Aber ansonsten gute Arbeit! :D
Ein Mathematiker kann mit einem Schneider verglichen werden, der sich nicht darum kümmert, welche Lebewesen auch immer in die Kleider hineinpassen mögen. Es ist eher so, dass sich beileufig eine Lebensform findet, die zu den Kleidern passt als umgekehrt.

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#12 Beitrag von johnnysnet » Fr Okt 19, 2007 19:27

Es gibt noch ein kleines Problem in deinem Programm. Wenn man ganz schnell fliegt, den Flieger dann umdreht und weiter Gas gibt sollte er langsamer werden, wegen dem Gegenschub.
Ich weiß schon, was du meinst. Aber ich hatte die Steuerung dafür ausgelegt, dass der Flieger eben auch die Richtung ändert, wenn kein Gas gegeben wird. Deshalb wird er immer einen Bogen fliegen wenn du Gas gibst und nie direkt umkehren und vorher langsamer werden.
Man muss es dann ja auch rechnerisch schaffen zu berechnen wie der Flieger fliegt, wenn der Flieger nicht nur um 180° zu der alten Richtung Gas gibt sondern schräg. Und daraus muss mann dann eine Art Mittelwert bilden oder sowas, der sich langsam der neuen Richtung anpasst.
Sicherlich, möglich ist alles. Nur nicht mit dem Prinzip, wie ich es hier gemacht habe.
Vielleicht schafft das ja noch jemand.
Es wäre wünschenswert wenn du nicht darauf wartest, das dir das wieder jemand macht, sondern jetzt mit Hilfe meines Codes als Beispiel dir selbst Gedanken machst, wie du den Effekt erreichen könntest. Hast du denn schon verstanden, wie mein Code funktioniert?

Benutzeravatar
Zabo
6 Bit
Beiträge: 70
Registriert: Mi Okt 10, 2007 14:40
Wohnort: München
Kontaktdaten:

#13 Beitrag von Zabo » Fr Okt 19, 2007 20:12

nee ich progge (noch) nich mit glbasic
wenns mim öffnen nich geht, geh mit rechtsklick drauf, öffnen mit und dann den firefox (oder halt explorer) auswählen
wenn du linux hast, hab ich kein blassen schimmer
Geht mal auf
Meine Shisha <-- wenn ihr schon drauf wahrt, geht bidde nochmal (das gibt punkte, mit der ich die shisha pimpen kann) bald sieht meine wieder anders aus. big thx an alle
Meine Homepage

Benutzeravatar
johnnysnet
9 Bit
Beiträge: 989
Registriert: So Dez 17, 2006 12:59
Wohnort: Leipzig
Kontaktdaten:

#14 Beitrag von johnnysnet » Fr Okt 19, 2007 20:27

Ah danke, jetzt hat's geklappt. Der Typ von Steuerung dürfte wohl genau dem entsprechen, was Kolumbus möchte.

Benutzeravatar
purestrain
7 Bit
Beiträge: 165
Registriert: Mi Feb 28, 2007 19:30

#15 Beitrag von purestrain » So Okt 21, 2007 08:58

Hallo,

Wird zwar nicht vielleicht nicht mehr gebraucht (hab den code nicht gesehen), aber trotzdem:

Jedes 2D-Objekt hat eine Geschwindigkeit und Position (vX, vY, pX, pY). Wenn ich nun eine Steuerung aehnlich von Asteroids brauche, muss nur folgendes berechnet werden:

pro spielzyklus (frame ect.)
beginn

pX := pX + vX;
pY := pY + vY;

wenn (beschleunigungstaste gedrueckt)
beginn
vX := vX + sinus(richtung);
vY := vY + cosinus(richtung)
ende

wenn(reibung)
begin
vX := vX * 0.99
vY := vY * 0.99
end

ende

Dies ist physikalisch nicht ganz korrekt, und Sinus/Cosinus muss evtl. angepasst werden, je nach Koordinatensystem.

Gruss
Michael

Antworten

Zurück zu „GLBasic“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast