Ce que tu veux faire est assez complexe en réalité.
Pour les collisions en fonction du layer/étage, la solution la plus simple reste d'avoir 2 types d'objets solides avec des sprites qui peuvent se chevaucher pour simplifier l'edition de la carte.
T'auras un collider pour le premier plan et un collider pour le second.
Tu crées une fonction placeFreeLayer avec dedans
- Code:
-
var layer;
layer = argument2;
if(layer == 0) {
return !place_meeting(argument0, argument1, collider_layer0)
}
else {
return !place_meeting(argument0, argument1, collider_layer1)
}
return false
Dans ton personnage tu crées ainsi une variable current_layer que tu passeras a la fonction ainsi:
if(placeFreeLayer(x+1, y, current_layer)) { // move right ...
Il te faut bien entendu un autre type d'objet, qui changera le current_layer du personnage s'il passe dessus, pour changer de layer si tu passes par ex sous ou sur un pont.
Pour le cercle transparent qui se découpe la ça deviens bien plus compliqué, il faut afficher le layer ou appliquer l'effet dans une surface, puis ensuite a l'aide de blend mode effacer le rond que tu souhaites, puis ensuite afficher la surface dans le bon ordre pour qu'elle soit affichée au dessus de l'autre plan...
Enfin bref sous GM c'est un peu le bordel.