Moin!
Ich bin grad dabei einen topdownshooter zu machen.Ich habe eine WSAD Steuerung gemacht. Wenn man 'D' drückt und gegen die Wand läuftbleibt der Spieler ganz normal stehen. Wenn man dann 'D' loslässt und 'W' drückt geht der Spieler ganz normal nach oben.
Wenn ich aber 'D' und 'W' gleichzeitig drücke und gegen die Wand rechts vom player laufe, bleibt der Player auch stehen. Er sollte sich aber mit einem speed von 3.16 (√5+5) nach oben bewegen.
Dies liegt sicher dadran, dass ich den speed bei einer Collision mit der Wand null setzte.
Was kann ich machen, damit der Player sich bei einer collision mit der Wand und 2 gedrückten Tasten mit einem speed von 3.16 an der Wand lang bewegt?
Dies ist der Code, den ich fürs gehen bemnutze:
(ich weiß ist etwas kompliziert, aber würde ich gerne so lassen, da der player auf den Diagonalen nicht schneller ist und ich später den Speed für jede Richtung individuell noch verändern kann)
Alles anzeigen
obj_player
obj_wall
Achja die Suche hatte ich auch schon benutzt und hab auch viel gefunden, aber hat mir alles nicht weiter geholfen...
Und wers nochmal als .gmk haben will:
Ich bin grad dabei einen topdownshooter zu machen.Ich habe eine WSAD Steuerung gemacht. Wenn man 'D' drückt und gegen die Wand läuftbleibt der Spieler ganz normal stehen. Wenn man dann 'D' loslässt und 'W' drückt geht der Spieler ganz normal nach oben.
Wenn ich aber 'D' und 'W' gleichzeitig drücke und gegen die Wand rechts vom player laufe, bleibt der Player auch stehen. Er sollte sich aber mit einem speed von 3.16 (√5+5) nach oben bewegen.
Dies liegt sicher dadran, dass ich den speed bei einer Collision mit der Wand null setzte.
Was kann ich machen, damit der Player sich bei einer collision mit der Wand und 2 gedrückten Tasten mit einem speed von 3.16 an der Wand lang bewegt?
Dies ist der Code, den ich fürs gehen bemnutze:
(ich weiß ist etwas kompliziert, aber würde ich gerne so lassen, da der player auf den Diagonalen nicht schneller ist und ich später den Speed für jede Richtung individuell noch verändern kann)

GML-Quellcode
- //Steuerung
- //Prüfung, welche Tasten gedrückt werden --> Variablenwerte werden gestzt
- {
- if (keyboard_check(ord('A'))) global.key_a= 1;
- if (keyboard_check(ord('D'))) global.key_d= 1;
- if (keyboard_check(ord('W'))) global.key_w= 1;
- if (keyboard_check(ord('S'))) global.key_s= 1;
- if (keyboard_check_released(ord('A'))) global.key_a= 0;
- if (keyboard_check_released(ord('D'))) global.key_d= 0;
- if (keyboard_check_released(ord('S'))) global.key_s= 0;
- if (keyboard_check_released(ord('W'))) global.key_w= 0;
- //wenn 1 Taste gedrückt wird, wird der playerspeed gesetzt
- if global.key_a=1 && global.key_d=0 && global.key_s=0 && global.key_w=0 x+=-5
- if global.key_a=0 && global.key_d=1 && global.key_s=0 && global.key_w=0 x+=5
- if global.key_a=0 && global.key_d=0 && global.key_s=1 && global.key_w=0 y+=5
- if global.key_a=0 && global.key_d=0 && global.key_s=0 && global.key_w=1 y+=-5
- //wenn 2 Tasten gedrückt werden, wird der playerspeed gesetzt
- if global.key_a=1 && global.key_d=0 && global.key_s=0 && global.key_w=1 {x+=-3.16 y+=-3.16}
- if global.key_a=0 && global.key_d=1 && global.key_s=0 && global.key_w=1 {x+=3.16 y+=-3.16}
- if global.key_a=0 && global.key_d=1 && global.key_s=1 && global.key_w=0 {x+=3.16 y+=3.16}
- if global.key_a=1 && global.key_d=0 && global.key_s=1 && global.key_w=0 {x+=-3.16 y+=3.16}
- //3 Tasten (speed=0)
- if global.key_a=1 && global.key_d=1 && global.key_s=1 && global.key_w=0 y+=0
- if global.key_a=0 && global.key_d=1 && global.key_s=1 && global.key_w=1 y+=0
- if global.key_a=1 && global.key_d=0 && global.key_s=1 && global.key_w=1 y+=0
- if global.key_a=1 && global.key_d=1 && global.key_s=0 && global.key_w=1 y+=0
- //4 Tasten (speed=0)
- if global.key_a=0 && global.key_d=0 && global.key_s=0 && global.key_w=0 y+=0
- }
obj_player

Achja die Suche hatte ich auch schon benutzt und hab auch viel gefunden, aber hat mir alles nicht weiter geholfen...
Und wers nochmal als .gmk haben will:















