Hallo,
Ich bin gerade dabei ein Minecraft-2D ähnelndes Spiel zu programmieren.
Hier mein Problem:
Dies ist mein Code:
Alles anzeigen
Im Folgenen werde ich ihn kurz erklären, damit jeder weiß, worum es geht:
Mit dieser Zeile prüfe ich die Position des Mausklicks. Bei einem bestimmten Radius um den Spieler, wird der Code fortgesetzt
Mit diesen beiden Zeilen prüfe ich, ob an dieser Position schon ein Block oder Spieler ist. Da es ähnlich wie in Minecraft ist, wird hier mithilfe der Funktion floor, die x- und y-koordinate der Maus, durch 32 geteilt.
Der Rest wird abgeschnitten und diese Zahl mit 32 multipliziert. So wird der Block nicht irgendwie im Raum platziert, sondern an einem Grid.
Das Problem ist, dass ich trotzdem einen Block in meinen Spieler platzieren kann, wenn er zwischen zwei Blöcken steht.
Wenn ich beim Spieler place_meeting benutze, kann ich, egal wann, den Spieler zubauen.
Meine Frage ist, ob jemand weiß, wie ich dieses Problem lösen könnte.
In diesem Code wird geprüft, wieviele Blöcke ich habe, wenn es mehr als 0 sind, wird der Block am Grid platziert und ein Block von allen Blöcken abgezogen.
Mit lieben Grüßen,
SuspecT
Ich bin gerade dabei ein Minecraft-2D ähnelndes Spiel zu programmieren.
Hier mein Problem:
Dies ist mein Code:
Quellcode
- //Block platzieren
- if(point_distance(floor(mouse_x/32)*32+16, floor(mouse_y/32)*32+16, obj_player.x, obj_player.y) < global.p_radius*32){ //Radius
- if(position_meeting(floor(mouse_x/32)*32+16, floor(mouse_y/32)*32+16, obj_player) == false){ //Kollision neben Spieler
- if(position_meeting(floor(mouse_x/32)*32+16, floor(mouse_y/32)*32+16, obj_block) == false){ //Kollision neben Block
- if(global.p_blocks > 0){ //Mehr als 0 Blöcke
- instance_create(floor(mouse_x/32)*32, floor(mouse_y/32)*32, obj_block); //Block wird platziert (am Grid)
- global.p_blocks -= 1; //Ein Block abgezogen
- }
- }
- }
- }
Im Folgenen werde ich ihn kurz erklären, damit jeder weiß, worum es geht:
Mit dieser Zeile prüfe ich die Position des Mausklicks. Bei einem bestimmten Radius um den Spieler, wird der Code fortgesetzt
Mit diesen beiden Zeilen prüfe ich, ob an dieser Position schon ein Block oder Spieler ist. Da es ähnlich wie in Minecraft ist, wird hier mithilfe der Funktion floor, die x- und y-koordinate der Maus, durch 32 geteilt.
Der Rest wird abgeschnitten und diese Zahl mit 32 multipliziert. So wird der Block nicht irgendwie im Raum platziert, sondern an einem Grid.
Das Problem ist, dass ich trotzdem einen Block in meinen Spieler platzieren kann, wenn er zwischen zwei Blöcken steht.
Wenn ich beim Spieler place_meeting benutze, kann ich, egal wann, den Spieler zubauen.
Meine Frage ist, ob jemand weiß, wie ich dieses Problem lösen könnte.
In diesem Code wird geprüft, wieviele Blöcke ich habe, wenn es mehr als 0 sind, wird der Block am Grid platziert und ein Block von allen Blöcken abgezogen.
Mit lieben Grüßen,
SuspecT

