Guten Abend,
Ich bastel seit einigen Tagen an einem Platformer dabei bin ich auf Folgendes Problem gestoßen:
Der Spieler (obj_player) soll durch dagegen laufen eine Kiste (obj_box) verschieben können, habe verschiedene Varianten ausprobiert bei der erfolgreichsten ist der Spieler sobald die Kiste die Wand (obj_block) berührt hat durch die Kiste gelaufen.
Ich poste mal meine obj-Skripte ich hoffe mir kann jemand helfen.
obj_player
Create:
Step:
Alles anzeigen
obj_box (hat den parent obj_block)
Create:
Step:
Alles anzeigen
Ich wäre sehr dankbar für eine Lösung da die Tutorials die es zu dem Thema gibt schrecklichen Code enthalten.
Ich bastel seit einigen Tagen an einem Platformer dabei bin ich auf Folgendes Problem gestoßen:
Der Spieler (obj_player) soll durch dagegen laufen eine Kiste (obj_box) verschieben können, habe verschiedene Varianten ausprobiert bei der erfolgreichsten ist der Spieler sobald die Kiste die Wand (obj_block) berührt hat durch die Kiste gelaufen.
Ich poste mal meine obj-Skripte ich hoffe mir kann jemand helfen.
obj_player
Create:
Step:
Quellcode
- /// Players Input
- key_right = keyboard_check(vk_right);
- key_left = -keyboard_check(vk_left);
- key_jump = keyboard_check(vk_up);
- key_down = keyboard_check(vk_down);
- //React to Inputs
- move = key_right + key_left;
- hsp = move * movespeed;
- if(vsp < 10)
- {
- vsp += grav;
- }
- if(place_meeting(x,y+1,obj_block))
- {
- if (key_jump)
- {
- vsp = -jumpspeed;
- }
- }
- hsp_final = hsp + hsp_carry;
- hsp_carry = 0;
- // Horizontal Collision
- if (place_meeting (x + hsp_final,y,obj_block))
- {
- while (!place_meeting(x+sign(hsp_final),y,obj_block))
- {
- x += sign(hsp_final) ;
- }
- hsp_final = 0;
- hsp = 0;
- }
- // Vertical Collision
- if (place_meeting (x,y + vsp,obj_block))
- {
- while (!place_meeting(x,y+sign(vsp),obj_block))
- {
- y += sign(vsp) ;
- }
- vsp=0;
- }
- x += hsp_final;
- y += vsp;
- // Animate
- if (move!=0) {image_xscale=move}
- if (place_meeting(x,y+1,obj_block))
- {
- if (hsp!=0)
- {
- sprite_index = spr_player_run;
- }
- else
- {
- sprite_index = spr_player_idle;
- }
- if (place_meeting(x+move,y,obj_block))
- {
- sprite_index = spr_player_push;
- }
- }
- else
- {
- if (vsp < 0)
- {
- sprite_index = spr_player_jump;
- }
- else
- {
- sprite_index = spr_player_fall;
- }
- }
obj_box (hat den parent obj_block)
Create:
Step:
Quellcode
- vsp += grav;
- // Movability
- if (place_meeting(x,y,obj_player))
- {
- hsp = obj_player.hsp_final;
- }
- else
- {
- hsp = 0;
- }
- // Horizontal Collision
- if (place_meeting (x + hsp,y,obj_block))
- {
- while (!place_meeting(x+sign(hsp),y,obj_block))
- {
- x += sign(hsp) ;
- }
- hsp = 0;
- }
- // Vertical Collision
- if (place_meeting (x,y + vsp,obj_block))
- {
- while (!place_meeting(x,y+sign(vsp),obj_block))
- {
- y += sign(vsp) ;
- }
- vsp = 0;
- }
- x += hsp;
- y += vsp;
Ich wäre sehr dankbar für eine Lösung da die Tutorials die es zu dem Thema gibt schrecklichen Code enthalten.