Salut,
Je suis nouveau sur GMS, et j'ai un petit problème avec une instance rebelle.
En gros, j'ai créé une grille, et j'ai un obj_car et un obj mouse_click qui y sont aimanté.
Comme ca c'est ce que j'ai fait au tout début, ca à été fait en DnD, mais après fait la suite en GML.
En gros, j'ai 3 objets, obj_car, obj_mouseClick et obj_controller. Je vous met une courtes descriptions de ce que ces 3 objets contiennent.
MouseClick : step : aimanté a la grille avec un place_snapped.
si obj_car est a la position de mouseClick alors obj_car saute à la position de mouseClick et mouseClick se détruit.
Car : step : si le nombre de mouseClick est égal a 1, obj_car bouge jusqu'a la position de mouseClick. Sinon, obj_car ne bouge pas.
Controller : global left button : Si le nombre de mouseClick est supérieur à 1, obj_car ne bouge pas, sinon créer l'instance mouseClick à la position de la souris.
step : j'ai ce bout de GML :
- Code:
-
car_pos_x = obj_car.x;
car_pos_y = obj_car.y;
if !instance_exists(obj_mouseClick) {
mouse_pos_x = null;
mouse_pos_y = null;
}
else {
mouse_pos_x = obj_mouseClick.x;
mouse_pos_y = obj_mouseClick.y;
if (mouse_pos_x - car_pos_x > 1 || mouse_pos_y - car_pos_y > 1 )
{
obj_car.speed = 0;
}
}
Maintenant, quand je lance le jeu, si je clique sur une case adjacente à obj_car (y compris les diagonales), tout ce passe comme prévu, la voiture va jusqu'a mouseClick, ce dernier se détruit et tout va bien. Maintenant, si je clique à plus de 1 case, mouseClick se créé, mais la voiture n'a pas le droit de bouger donc elle se décale un peu vers mouseClick puis le jeu se bloque.
Maintenant, j'ai pensé qu'en détruisant mousClick quand il est a plus de 1 case de la voiture, le problème serait réglé. Du coup j'ai rajouté cette ligne sous "obj_car.speed = 0;" :
- Code:
-
car_pos_x = obj_car.x;
car_pos_y = obj_car.y;
if !instance_exists(obj_mouseClick) {
mouse_pos_x = null;
mouse_pos_y = null;
}
else {
mouse_pos_x = obj_mouseClick.x;
mouse_pos_y = obj_mouseClick.y;
if (mouse_pos_x - car_pos_x > 1 || mouse_pos_y - car_pos_y > 1 )
{
obj_car.speed = 0;
with(obj_controller) instance_destroy();
}
}
MouseClick se créer toujours, la voiture se bloque, exactement comme avant. Mais surtout, dorénavant les seules positions ou je peut vraiment bougé obj_car sont la case directement à gauche et la case directement au dessus. Toutes les autres bloquent.
Pourquoi cela se produit? Et pourquoi ça ne se produisait pas quand il n'y avait pas la ligne qui détruisait mouseClick?
J'ai beau avoir essayé plusieurs solutions, je n'arrive pas à résoudre ce problème.
Quelqu'un aurait une idée?
Merci!