From f8f5f7952a864802a35fdb401531d67b1e7fef2c Mon Sep 17 00:00:00 2001 From: rick Date: Sun, 6 Dec 2020 12:38:35 +0100 Subject: [PATCH] Ajout recul sur monstre lors attaque joueur --- objects/oMonster/Create_0.gml | 1 + objects/oMonster/Step_0.gml | 76 ++++++++++++++++-------------- objects/oMonsterMelee/Create_0.gml | 1 + objects/oPlayer/Create_0.gml | 4 +- objects/oPlayer/KeyPress_74.gml | 54 ++++++++++++++------- scripts/Script1/Script1.gml | 2 +- 6 files changed, 83 insertions(+), 55 deletions(-) diff --git a/objects/oMonster/Create_0.gml b/objects/oMonster/Create_0.gml index 16ccb34..4e3204d 100644 --- a/objects/oMonster/Create_0.gml +++ b/objects/oMonster/Create_0.gml @@ -8,6 +8,7 @@ dir = 3; pv = 5; attack = 1; +touche = 0; // s'ils sont touchés enum typeMelee { squelette, diff --git a/objects/oMonster/Step_0.gml b/objects/oMonster/Step_0.gml index b559fff..aefbbc6 100644 --- a/objects/oMonster/Step_0.gml +++ b/objects/oMonster/Step_0.gml @@ -1,36 +1,40 @@ -// deplacement monstre - -if dureeDeplacement != 0 { - x += deplaceHorizontal; - y += deplaceVertical; - dureeDeplacement --; -} -else { - deplaceHorizontal = 0; - deplaceVertical = 0; - dir = irandom(3); -switch(dir) { - case 0 : deplaceVertical = 1; break; - case 1 : deplaceHorizontal = 1; break; - case 2 : deplaceVertical = -1; break; - case 3 : deplaceHorizontal = -1; break; - } - - dureeDeplacement = 120; -} - -// collision avec un mur - -if place_meeting(x,y,oWall) { - if (dir > 1) dir -= 2; - else dir += 2; - - switch(dir) { - case 0 : deplaceVertical = 1; break; - case 1 : deplaceHorizontal = 1; break; - case 2 : deplaceVertical = -1; break; - case 3 : deplaceHorizontal = -1; break; - } - - dureeDeplacement = 120; -} \ No newline at end of file +// deplacement monstre + +if (touche == 0) { + if dureeDeplacement != 0 { + x += deplaceHorizontal; + y += deplaceVertical; + dureeDeplacement --; + } + else { + deplaceHorizontal = 0; + deplaceVertical = 0; + dir = irandom(3); + switch(dir) { + case 0 : deplaceVertical = 1; break; + case 1 : deplaceHorizontal = 1; break; + case 2 : deplaceVertical = -1; break; + case 3 : deplaceHorizontal = -1; break; + } + + dureeDeplacement = 120; + } + + // collision avec un mur + + if place_meeting(x,y,oWall) { + if (dir > 1) dir -= 2; + else dir += 2; + + switch(dir) { + case 0 : deplaceVertical = 1; break; + case 1 : deplaceHorizontal = 1; break; + case 2 : deplaceVertical = -1; break; + case 3 : deplaceHorizontal = -1; break; + } + + dureeDeplacement = 120; + } +} else { + touche--; +} \ No newline at end of file diff --git a/objects/oMonsterMelee/Create_0.gml b/objects/oMonsterMelee/Create_0.gml index f966d8f..7c8a073 100644 --- a/objects/oMonsterMelee/Create_0.gml +++ b/objects/oMonsterMelee/Create_0.gml @@ -7,6 +7,7 @@ image_speed = 1; switch (monType) { case typeMelee.squelette: attack = 10; + pv = 20; sprite_index = sSkeletonR; break; case typeMelee.blob: diff --git a/objects/oPlayer/Create_0.gml b/objects/oPlayer/Create_0.gml index f3eec78..1c94493 100644 --- a/objects/oPlayer/Create_0.gml +++ b/objects/oPlayer/Create_0.gml @@ -3,4 +3,6 @@ pv = 100; inv = 0; //timer invinsiblité indexImageInfo = 0; -compteurFrames = 0; \ No newline at end of file +compteurFrames = 0; + +attack = 10; \ No newline at end of file diff --git a/objects/oPlayer/KeyPress_74.gml b/objects/oPlayer/KeyPress_74.gml index 2094ffa..f77a3e7 100644 --- a/objects/oPlayer/KeyPress_74.gml +++ b/objects/oPlayer/KeyPress_74.gml @@ -2,32 +2,52 @@ //jouer l'animation - tailleEpee = 20; // à définir + tailleEpee = 30; // à définir + checkCote = image_index / 8; // récupère où regarde le personnage + inst = noone; - switch (image_index) { - case 0: - inst = collision_rectangle(x+5, y+tailleEpee, x-5, y+tailleEpee, oMonster, true, oPlayer); +if (sprite_index == sPlayerRun) { + if (checkCote <= 1) { + inst = collision_rectangle(x+5, y+tailleEpee, x-5, y+tailleEpee, oMonster, false, oPlayer); //inst = getCollisionArea(x-5, y+tailleEpee, x+5, y+tailleEpee, oMonster); - break; - case 1: - inst = collision_rectangle(x+tailleEpee, y+5, x+tailleEpee, y-5, oMonster, true, oPlayer); + } else if (checkCote <= 2) { + inst = collision_rectangle(x+tailleEpee, y+5, x+tailleEpee, y-5, oMonster, false, oPlayer); //inst = getCollisionArea(x+tailleEpee, y+5, x+tailleEpee, y-5, oMonster) - break; - case 2: - inst = collision_rectangle(x+5, y-tailleEpee, x-5, y-tailleEpee, oMonster, true, oPlayer); + } else if (checkCote <= 3) { + inst = collision_rectangle(x+5, y-tailleEpee, x-5, y-tailleEpee, oMonster, false, oPlayer); //inst = getCollisionArea(x+5, y-tailleEpee, x-5, y-tailleEpee, oMonster) - break; - case 3: - inst = collision_rectangle(x-tailleEpee, y+5, x-tailleEpee, y-5, oMonster, true, oPlayer); + } else if (checkCote <= 4) { + inst = collision_rectangle(x-tailleEpee, y+5, x-tailleEpee, y-5, oMonster, false, oPlayer); //inst = getCollisionArea(x-tailleEpee, y+5, x-tailleEpee, y-5, oMonster); - break; - default: - inst = noone; - } + } +} else { + switch (image_index) { + case 0: + inst = collision_rectangle(x+5, y+tailleEpee, x-5, y+tailleEpee, oMonster, false, oPlayer); + //inst = getCollisionArea(x-5, y+tailleEpee, x+5, y+tailleEpee, oMonster); + break; + case 1: + inst = collision_rectangle(x+tailleEpee, y+5, x+tailleEpee, y-5, oMonster, false, oPlayer); + //inst = getCollisionArea(x+tailleEpee, y+5, x+tailleEpee, y-5, oMonster) + break; + case 2: + inst = collision_rectangle(x+5, y-tailleEpee, x-5, y-tailleEpee, oMonster, false, oPlayer); + //inst = getCollisionArea(x+5, y-tailleEpee, x-5, y-tailleEpee, oMonster) + break; + case 3: + inst = collision_rectangle(x-tailleEpee, y+5, x-tailleEpee, y-5, oMonster, false, oPlayer); + //inst = getCollisionArea(x-tailleEpee, y+5, x-tailleEpee, y-5, oMonster); + break; + default: + inst = noone; + } +} if (inst != noone) { show_debug_message("objet trouvé !"); // attaque + hit(self, inst, attack); + inst.touche = 30; } else { //a supp show_debug_message("pas d'objet..."); diff --git a/scripts/Script1/Script1.gml b/scripts/Script1/Script1.gml index 8471916..3049958 100644 --- a/scripts/Script1/Script1.gml +++ b/scripts/Script1/Script1.gml @@ -7,7 +7,7 @@ @param {objRepousse} objet qui sera repoussé */ function knockBack(obj, objRepousse) { - knockback = 10; + knockback = 20; oY = objRepousse.y; oX = objRepousse.x; if (obj.x > oX && !place_meeting(oX-knockback-1, oY, oWall)) {