Raktetensteuerung mit Gravity ?
- GM 8
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Natürlich geht das ohne dll. Der GM hat 2 eingebaute Variablen: gravity , gravity_direction
gravity_direction gibt die Richtung der Gravitation an
gravity gibt die Gravitationsstärke an -
du brauchst:
- direction
- speed
- gravity -
Ich komm leider nicht drauf ?
Wenn ich Gravity direction 270 und gravity = __ im step event eingebe ,kann ich die rakete nicht mehr steuern,
wo muss ich die gravity hingeben, auf das create oder ......,so das wenn ich pfeil taste nach oben drücke das sie zb dann die rakete nach oben fliegt und ich dann nicht mehr
die pfeiltaste drücke dass die rakete an speed verliert (speed -=1) und dann nach unten absackt.
Hab leider kein tutorial gefunden in diese richtung ? -
create:
gravity = 0.2;
friction = 0.98;
step event:
if (rechtepfeiltaste)
direction += 1;
if (linkepfeiltaste)
direction -= 1;
image_angle = direction;
if (vorderepfeiltaste)
speed += 0.05; -
Hab ich was falsch im step Event :
Funtkioniert beides nicht
-
-
Um Tasten abzufragen gibt es diese Funktionen, ein Blick in die Hilfe hätte es auch getan
keyboard_check(key) prüft ob key gedrückt gehalten wird
keyboard_check_pressed(key) prüft ob key gedrückt wurde
keyboard_check_released(key) prüft ob key los gelassen wurde
Edit: Zu spät! Aber richtig -
Es funktioniert einfach nichts nichts bewegt sich ??
-
Ich kann mir leider die Datei nicht ansehen da ich den Gm nicht besitze. Hast du das alles eh im "Step" Event?
-
Habs mir mal angeschaut und kann dir vielleicht ein bisschen helfen.
Du machst die Tastenüberprüfung im hochgeladenen Beispiel mit keyboard_check_pressed(key). Das bedeutet, dass geprüft wird, ob die Taste im letzten Step runtergedrückt wurde. Es bringt damit nichts, wenn man die Taste gedrückt hält, weil dann die aktion nicht ausgelöst wird. Lösung: stattdessen keyboard_check(key) benutzen.
Warum sich nichts bewegt ? Schau dir mal deine Zahlen an: direction += 1 bedeutet, dass die Rakete sich um 1° nach links dreht, was nicht sichtbar ist.
und ein Speed von 0.05 ?? Also ein zwanzigstel Pixel pro Step ? Lösung: bei beiden höhere Werte nehmen und stattdessen lieber eine konstante Geschwindigkeit benutzen (nicht speed += ... sondern speed = ...) oder eine Höchstgeschwindigkeit mit einer If-Abfrage einbauen (if speed < Höchstgeschwindigkeit beschleunigung; else nichts)
Ein Problem, für das ich keine Lösung habe, weil ich nie damit gearbeitet habe: wenn mal die Richtungstasten loslässt, wird die direction offenbar durch die Gravity wieder auf 270 gesetzt, man kann sich also gar nicht nach oben oder zur Seite bewegen. Vielleicht ginge das irgendwie anders, z.B. dass man im Step Event vspeed += 0.2 (oder anderer Wert) setzt und die gravity komplett rauslässt.
Edit: grade getestet, klappt noch nicht so gut... -
Hatte es auch schon so :
Kann normal beschleunigen , Wenn ich die Rakete mit der Spitze nach unten drehe fängt gravity an zu wirken und wenn ich die Rakete wieder nach oben drehe verliert es langsam
an gravity.(Vielleicht nur Image_Angle drehen und direction anders definieren ?)
Ich hätte nicht gedacht das dass so schwer sein kann wenn ich im Prinzip ein "Lunar Lander" Spiel machen möchte nur halt mit einer Rakete die sich auch noch drehen kann. -
Das war gar nicht so einfach.
Hier, bitte.
Das hier ist eine schon ziemlich ausgewachsene Physic-Engine.
Alles lässt sich im Create Event der Rakete modifizieren. Viel Spaß.
EDIT: Ach ja, die Lösung: Man muss einfach eine unabhänige speed und
direction variable einfügen und dann noch ein bisschen rumbasteln.
Schaut euch ruhig mal die Engine an (=
EDIT2: Ich nehme noch ein paar Bugfixes vor.
EDIT3: Oh, das muss sich wohl noch jemand angucken. Es gibt nen Bug wenn man zur Seite fliegt.
und friction gibt es auch keine.
EDIT4: Man müsste eine Kraft von unten einfügen, jedoch würde das die Schwerkraft zu nichte machen.
Epische Zwickmühle.Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von Mr. Diesel () aus folgendem Grund: Was meinst du hier zu finden??!