Quantcast
Channel: Active questions tagged game-maker - Stack Overflow
Viewing all articles
Browse latest Browse all 189

I want to create a One-Way platform in GameMaker, how?

$
0
0

So i wanted to create a one-way platform for my game, I'm a beginner in GameMaker (and coding in general) , and new to StackOverflow so I don't know how to do it.I have my obj_player, with a create, and step events.I have an obj_oneway with no code attached to it.

So here's my create and step events for my player :

// Create Eventmove_speed = 4; jump_speed = 16;move_x = 0; move_y = 0;tmWorld1 = layer_tilemap_get_id("tiles");
// Step Eventmove_x = move_speed * sign(image_xscale); // Le joueur se déplacera dans la direction où il fait face// Vérifier s'il y a un mur dans la direction où le joueur se déplaceif (place_meeting(x + move_x, y, tmWorld1)) {    image_xscale *= -1; // Retourner le sprite et changer de direction}// Effectuer une vérification de collision personnalisée avec obj_onewayvar oneway_id = instance_place(x + move_x, y, obj_oneway);if (oneway_id && oneway_id.object_index == obj_oneway) {    // Vérifier si le joueur se déplace vers le bas et est au-dessus de la plateforme    if (move_y > 0 && y <= oneway_id.y) {        // Sauvegarder le masque de collision d'origine        var original_mask = oneway_id.mask_index;        // Désactiver temporairement les collisions depuis le bas        oneway_id.mask_index = 0;        // Appliquer le déplacement        move_and_collide(move_x, move_y, tmWorld1);        // Restaurer le masque de collision d'origine        oneway_id.mask_index = original_mask;    }    else {        // Si le joueur n'est pas en train de descendre ou est au-dessus, effectuer une vérification normale de la collision        if (place_meeting(x + move_x, y, tmWorld1)) {            // S'il y a un mur devant, arrêter le déplacement horizontal            move_x = 0;        }        move_and_collide(move_x, move_y, tmWorld1);    }}else {    // Si le joueur n'est pas sur une plateforme à sens unique, effectuer une vérification normale de la collision    if (place_meeting(x + move_x, y, tmWorld1)) {        // S'il y a un mur devant, arrêter le déplacement horizontal        move_x = 0;    }    move_and_collide(move_x, move_y, tmWorld1);}if (place_meeting(x, y + 2, tmWorld1)) {    move_y = 0;    if (keyboard_check_pressed(vk_space)) { // Utiliser keyboard_check_pressed pour déclencher le saut une seule fois        move_y = -jump_speed;    }} else {    if (move_y < 10) {        move_y += 1;    }}

I did the collision masks of the two sprites, a rectangle for the two of them.When I am under the platform, I can pass through it, but when I land on it, I can too, and I want the player to walk on the platform.On the tiles layer, there are some tiles, but the one way platform is not on this collision, it is an object and I saved it in the Instances layer.I have tried many things and I still don't understand why it does not work.If you have advices for my code I'll take them too.Thanks !


Viewing all articles
Browse latest Browse all 189

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>