Abend!
Vergebens versuche ich einen Sprung zur Seite, wie in bspw. "Hurdler" zu bewerkstelligen.
Sprich, die Spielfigur soll nach rechts springen um größere Distanzen überwinden zu können. Die Spielfigur ist wie in erwähntem Spiel bereits am rennen.
Zudem wirken die Sprünge bei mir nicht lebhaft genug. In Wirklichkeit würde man, bevor man springt, eine kurze Zeit auf der Stelle stehen um für den Sprung auszuholen.
Wie könnte man das umsetzen?
Folgenden Code habe ich bisher, was die Fortbewegung angeht.
Mir ist klar, dass das ganze nicht besonders gut geschrieben ist.
Ich hab gewisse Vorstellungen wie das Spiel zu sein hat aber das programmieren liegt mir einfach nicht.
Alles anzeigen
Vergebens versuche ich einen Sprung zur Seite, wie in bspw. "Hurdler" zu bewerkstelligen.
Sprich, die Spielfigur soll nach rechts springen um größere Distanzen überwinden zu können. Die Spielfigur ist wie in erwähntem Spiel bereits am rennen.
Zudem wirken die Sprünge bei mir nicht lebhaft genug. In Wirklichkeit würde man, bevor man springt, eine kurze Zeit auf der Stelle stehen um für den Sprung auszuholen.
Wie könnte man das umsetzen?
Folgenden Code habe ich bisher, was die Fortbewegung angeht.
Mir ist klar, dass das ganze nicht besonders gut geschrieben ist.
Ich hab gewisse Vorstellungen wie das Spiel zu sein hat aber das programmieren liegt mir einfach nicht.
GML-Quellcode
- //define keys
- jump_high = keyboard_check_pressed(vk_up);
- jump_low = keyboard_check_pressed(vk_down);
- jump_long = keyboard_check_pressed(vk_right);
- //define jump height
- if(jump_high) {jump_height = 8}
- if(jump_low) {jump_height = 6}
- vsp = vsp+grv;
- hsp = 2;
- //vertical collision high
- if(place_meeting(x,y+1,obj_walls)) and jump_high {
- vsp = -jump_height;
- }
- //vertical collision low
- if(place_meeting(x,y+1,obj_walls)) and jump_low {
- vsp = -jump_height;
- }
- //stop vertical movement if colliding
- if(place_meeting(x,y+vsp,obj_walls)) {
- while(!place_meeting(x,y+sign(vsp),obj_walls)) {
- y = y+sign(vsp);
- }
- vsp = 0;
- }
- //spread blood if colliding with walls
- if(place_meeting(x+hsp,y,obj_walls)) {
- repeat (20) instance_create_depth(x,y,-10,obj_blood);
- hsp = 0;
- global.dead = true;
- instance_destroy();
- }
- //set timer before run
- if(timer_active = true) {
- timer -= 1;
- if(timer == 0) {
- timer = room_speed * 1.5;
- can_walk = true;
- timer_active = false;
- instance_deactivate_object(obj_timer);
- }
- }
- //actually jump if run starts
- if(can_walk) = true {
- y = y + vsp;
- x = x + hsp;
- }