Hallo,
wie die Überschrift bereits verrät möchte ich etwas mit der Zeit spielen. Dabei möchte ich nicht einfach die Raum-Geschwindigkeit ändern, sondern Objekte unabhängig voneinander beeinflussen - doch da stoße ich an meine Grenzen.
Ich habe zunächst eine Testumgebung mit einem Objekt erstellt, dass nur springen kann (kleine Schritte zum Erfolg
). Es besitzt eine Schwerkraft-, eine Sprunggeschwindigkeit- und eine Verzerrung-Variable. Nun habe ich die Variablen, Schwerkraft und Sprunggeschwindigkeit, mit der Verzerrung-Variable multipliziert um meine Zeit-Verzerrung zu erreichen, doch das funktioniert nicht ganz. Die Sprunghöhe verändert sich, sobalt die Verzerrung-Variable verändert wird.
Ich habe bereits versucht die Verzerrung-Variable zu quadrieren, durch eins zu teilen und/oder die Wurzel zu ziehen um den Fehler zu beheben.
Der bisher beste Ansatz war dieser:
Spoiler anzeigen
Alles anzeigen
Doch vor allem dann, wenn ich mit der Verzerrungs-Variable über den Normalwert gehe, entstehen lästige Abweichungen in der Sprunghöhe.
Meine Verzerrungs-Variable "warp" besitzt zu Anfang den Wert 1.
Wie kann ich nun die Zeit langsamer/schneller ablaufen lassen, ohne die Sprunghöhe dabei zu verändern?
Freue mich schon über Tipps und Antworten.
-Skotchy
wie die Überschrift bereits verrät möchte ich etwas mit der Zeit spielen. Dabei möchte ich nicht einfach die Raum-Geschwindigkeit ändern, sondern Objekte unabhängig voneinander beeinflussen - doch da stoße ich an meine Grenzen.
Ich habe zunächst eine Testumgebung mit einem Objekt erstellt, dass nur springen kann (kleine Schritte zum Erfolg

Ich habe bereits versucht die Verzerrung-Variable zu quadrieren, durch eins zu teilen und/oder die Wurzel zu ziehen um den Fehler zu beheben.
Der bisher beste Ansatz war dieser:
GML-Quellcode
- /*
- bJmp = Boolean Jump
- bGrav = Boolean Gravity
- ResVSpd = Resulting Vertical Speed
- warp = Verzerrung
- */
- // |--- Input ---|
- if(keyboard_check(vk_up) && !place_free(x, y+1)){
- bJmp = true;
- }else{
- bJmp = false;
- }
- // |--- Physics ---|
- if(place_free(x, y+ResVSpd+1)){
- bGrav = true;
- }else{
- move_contact_solid(270, ResVSpd);
- bGrav = false;
- }
- // |--- Resulting ---|
- if(bGrav){
- ResVSpd = (ResVSpd + Gravity * sqr(warp));
- }else{
- ResVSpd = 0;
- if(bJmp){
- ResVSpd -= JumpSpd * warp;
- }
- }
- vspeed = ResVSpd;
Doch vor allem dann, wenn ich mit der Verzerrungs-Variable über den Normalwert gehe, entstehen lästige Abweichungen in der Sprunghöhe.
Meine Verzerrungs-Variable "warp" besitzt zu Anfang den Wert 1.
Wie kann ich nun die Zeit langsamer/schneller ablaufen lassen, ohne die Sprunghöhe dabei zu verändern?
Freue mich schon über Tipps und Antworten.
-Skotchy
"Ich sollte schlafen gehen"
~Pika-Pika~
~Pika-Pika~