| | Problème visee auto avec plusieurs ennemis | |
| | Auteur | Message |
---|
Mray Très bonne participation
Messages : 111
| Sujet: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 17:07 | |
| Hello, J'ai dans mon jeu le choix d'activer la visée automatique ou pas donc j'ai fais ceci : Dans mon objet player:Dans le create: - Code:
-
visee_auto_ok=false; visee_auto=false; Dans le step: - Code:
-
if ( keyboard_check_pressed(ord("V")) ) { show_message("Visee Auto Activee"); visee_auto_ok=true; } if ( keyboard_check_pressed(ord("B")) ) { show_message("Visee Auto Desactivee"); visee_auto_ok=false; } - Code:
-
if ( visee_auto_ok==true ) { visee_auto=true; } if ( visee_auto_ok==false ) { visee_auto=false; } - Code:
-
if ( collision_circle(x,y,200,object3,0,0) && visee_auto==true ) { image_angle = point_direction(x,y,object3.x,object3.y) } else { visee_auto=false; image_angle = point_direction(x,y,mouse_x,mouse_y) } Voilà, avec un ennemi, juste un ça marche parfaitement, mais quand il y a plusieurs ennemies la ça devient catastrophique, je tue un ennemi puis mon personnage le repointe la ou il a reapparut, car il est dans le circle d'un autre ennemi mais il pointe toujours l'ancien ennemi qui peut etre a l'autre bout de la map... Je ne sais pas comment régler ça, help |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 17:29 | |
| au lieu de mettre object3, créé une variable "ennemy" ou "target", que tu mets à -4 (dans le create) ensuite dans le step - Code:
-
target = instance_nearest(x,y,object3);
if ( collision_circle(x,y,200,target,0,0) && visee_auto==true ) { image_angle = point_direction(x,y,target.x,target.y) } else { visee_auto=false; image_angle = point_direction(x,y,mouse_x,mouse_y) }
object3 fait référence à l'object, ce qui est pas bon, car une fois dans ta room tu dois manipuler des instances. Si t'as 8 ennemies de type "objet3", le fait d'écrire collision_circle(x,y,200,object3,0,0) testera une collision avec seulement le 1er ennemie de type "object3", tu comprends? ( et instance_nearest(x,y,object) renvoit l'instance de l'objet qui est le plus proche de la position "x,y", faut améliorer un peu ça, sinon dès qu'un autre ennemie s'approche plus près, bah tu le ciblera automatiquement) |
| | | Mray Très bonne participation
Messages : 111
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 17:52 | |
| J'ai mis un peu de temps à comprendre à quoi servait le target mais c'est bon Mais pourquoi le mettre à -4 dans le create ? Par contre, quand tu dis améliorable, j'ai pas compris comment, car la le perso vise l'ennemi le plus proche, c'est ça que je voulais Merci ! |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 18:20 | |
| Histoire d'initialiser la variable, moi je faisais comme ça pour GM parce qu'en général, quand tu utilises une fonction qui est supposé renvoyer l'ID de l'instance (laquelle c'est quoi), ben ça renvoyait -4 si y'avait aucune instance qui répondait aux critère de la fonction Mais tu peux mettre ce que tu veux :p edit : Tant mieux si ça te convient, moi ce que j'aurais fait c'est une touche pour changer de cible, et justement qui permettrait de cibler la plus proche, j'trouve ça perturbant si ça change tout seul Faut voir le machin après |
| | | D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 18:34 | |
| -4 c'est la valeur de l'ID réservée "noone", qui désigne l'absence d'objet (l'équivalent du "null" des autres langages). Sinon, si le pixel perfect t'es inutile, tu peux replacer le collision_circle() par un point_distance() |
| | | Mray Très bonne participation
Messages : 111
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 19:00 | |
| - Termite a écrit:
- Histoire d'initialiser la variable, moi je faisais comme ça pour GM parce qu'en général, quand tu utilises une fonction qui est supposé renvoyer l'ID de l'instance (laquelle c'est quoi), ben ça renvoyait -4 si y'avait aucune instance qui répondait aux critère de la fonction
Mais tu peux mettre ce que tu veux :p
edit : Tant mieux si ça te convient, moi ce que j'aurais fait c'est une touche pour changer de cible, et justement qui permettrait de cibler la plus proche, j'trouve ça perturbant si ça change tout seul Faut voir le machin après Ok - D-z a écrit:
- -4 c'est la valeur de l'ID réservée "noone", qui désigne l'absence d'objet (l'équivalent du "null" des autres langages).
Sinon, si le pixel perfect t'es inutile, tu peux replacer le collision_circle() par un point_distance()
Euh j'ai pas très bien compris comment le changé, et ça me rapporterais quoi ? j'ai remarqué que parfois ( genre une fois sur 10 balles ( ce qui fait en réalité quand même beaucoup ) ) la visée auto s'applique au mob qui est mort et qui est repop plus loin, alors on voit 2-3 balles partir on ne sait ou Moyen de régler ça ? :/ |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 19:53 | |
| - Mray a écrit:
- Termite a écrit:
- Histoire d'initialiser la variable, moi je faisais comme ça pour GM parce qu'en général, quand tu utilises une fonction qui est supposé renvoyer l'ID de l'instance (laquelle c'est quoi), ben ça renvoyait -4 si y'avait aucune instance qui répondait aux critère de la fonction
Mais tu peux mettre ce que tu veux :p
edit : Tant mieux si ça te convient, moi ce que j'aurais fait c'est une touche pour changer de cible, et justement qui permettrait de cibler la plus proche, j'trouve ça perturbant si ça change tout seul Faut voir le machin après Ok
- D-z a écrit:
- -4 c'est la valeur de l'ID réservée "noone", qui désigne l'absence d'objet (l'équivalent du "null" des autres langages).
Sinon, si le pixel perfect t'es inutile, tu peux replacer le collision_circle() par un point_distance()
Euh j'ai pas très bien compris comment le changé, et ça me rapporterais quoi ?
j'ai remarqué que parfois ( genre une fois sur 10 balles ( ce qui fait en réalité quand même beaucoup ) ) la visée auto s'applique au mob qui est mort et qui est repop plus loin, alors on voit 2-3 balles partir on ne sait ou Moyen de régler ça ? :/ Ben c'est normal, étant donné que tu ne modifie pas ton object lorsqu'il meurt :d Ce que tu peux faire, c'est un script et tu tappes ça : - Code:
-
local t; for (i=0;i<instance_number(object3);i+=1) { t = instance_find(object3,i) ; if (t.mort==false) // On teste s'il est mort, je sais pas qu'est-ce qui change dans ton object lorsqu'il est mort, remplace par ce qu'il faut return t;
} return -4; // au cas où on en a trouvé aucun, on renvoit -4 qui signifie que bah y'a pas d'ennemies/ils sont tous mort :D
tu l'appelle par exemple find_alive_ennemy() et du coups tu mets dans ton code (step) target = find_alive_ennemy(); Et voilà ps : Un ID ne doit pas changer, il identifie l'instance. Par exemple 157563 ça sera le 1er ennemi, 157564 le second, ensuite 15762 le joueur, etc etc |
| | | Mray Très bonne participation
Messages : 111
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 20:25 | |
| Oula je commences à m'embrouiller avec le for Merci je test, par contre ça me met une erreur dans le script: - Citation :
- ___________________________________________
COMPILATION ERROR in Script: script2 Error in code at line 1: local t; ^ at position 7: Variable name expected.
ça m'a l'air tout con mais je sais pas quoi faire |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 20:41 | |
| Ah, "var t" plutôt |
| | | Mray Très bonne participation
Messages : 111
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 21:27 | |
| Euh j'ai fait : - Code:
-
var t; for (i=0;i<instance_number(object3);i+=1) { t = instance_find(object3,i) ;
if (t.mort==false) { if ( random(20)>19 ) { instance_create(x,y,object6) move_random(0,0); with other instance_destroy(); } else { move_random(0,0); with other instance_destroy(); return t;
} } } return -4; Puis dans le tir de mon objet player target = script2 Et pourtant ça ne marche pas :/ je me suis planté ou ? |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 22:41 | |
| target = script2() Mais faut que tu renommes tes scripts/objets, sinon tu vas finir par te perdre.. J'te conseille d'utiliser des acronymes, par exemple, au lieu de object3 pour l'ennemi, appelle-le obj_ennemy, au lieu de script2 appelle-le scr_findtarget(), etc edit : N'utilise le script que pour trouver une cible, le reste écris-le côté joueur |
| | | Mray Très bonne participation
Messages : 111
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 23:08 | |
| - Termite a écrit:
- target = script2()
Mais faut que tu renommes tes scripts/objets, sinon tu vas finir par te perdre..
J'te conseille d'utiliser des acronymes, par exemple, au lieu de object3 pour l'ennemi, appelle-le obj_ennemy, au lieu de script2 appelle-le scr_findtarget(), etc
edit : N'utilise le script que pour trouver une cible, le reste écris-le côté joueur Oui je sais à la base c'était censé être un test mais ça m'a plus et j'ai continué de développer ^^ Je suis un boulet mais le t.mort==false Je le rend t.mort=false; comment ? En le mettant dans la collision balles/ennemie + je déclare ou ? |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 23:09 | |
| non mais quand ton ennemie meurt, y'a bien une variable qui change non ? t.mort c'était pour l'exemple |
| | | Mray Très bonne participation
Messages : 111
| Sujet: Re: Problème visee auto avec plusieurs ennemis Mar 4 Oct 2011 - 23:13 | |
| Bah quand j'ai fais ça dans la collison balle/ennemi - Code:
-
if ( random(20)>19 ) { instance_create(x,y,object6) move_random(0,0); with other instance_destroy(); } else { move_random(0,0); with other instance_destroy(); }
Il donne les points puis réapparait autre part ^^' |
| | | Contenu sponsorisé
| Sujet: Re: Problème visee auto avec plusieurs ennemis | |
| |
| | | | Problème visee auto avec plusieurs ennemis | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |