AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-39%
Le deal à ne pas rater :
Pack Home Cinéma Magnat Monitor : Ampli DENON AVR-X2800H, Enceinte ...
1190 € 1950 €
Voir le deal

 

 Problème visee auto avec plusieurs ennemis

Aller en bas 
3 participants
AuteurMessage
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 Sad


Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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)

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 4 Oct 2011 - 17:52

J'ai mis un peu de temps à comprendre à quoi servait le target mais c'est bon Smile
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 Surprised

Merci ! Very Happy
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 Wink

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 Very Happy Faut voir le machin après clinoeuil

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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() Wink

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 Wink

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 Very Happy Faut voir le machin après clinoeuil

Ok Smile

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() Wink

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 Surprised
Moyen de régler ça ? :/
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 Wink

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 Very Happy Faut voir le machin après clinoeuil

Ok Smile

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() Wink

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 Surprised
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à clinoeuil

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

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 4 Oct 2011 - 20:25

Oula je commences à m'embrouiller avec le for rire
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 Surprised
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 4 Oct 2011 - 20:41

Ah, "var t" plutôt Very Happy

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 ?
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 clinoeuil

edit : N'utilise le script que pour trouver une cible, le reste écris-le côté joueur

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 clinoeuil

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 ? rouge
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite


Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Mray
Très bonne participation



Messages : 111

Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis EmptyMar 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 ^^'
Revenir en haut Aller en bas
Contenu sponsorisé





Problème visee auto avec plusieurs ennemis Empty
MessageSujet: Re: Problème visee auto avec plusieurs ennemis   Problème visee auto avec plusieurs ennemis Empty

Revenir en haut Aller en bas
 
Problème visee auto avec plusieurs ennemis
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Resolu]Problème avec collision _ line avec mur entre 2 obj
» problème avec gravité [résolu] - problème avec mouvements
» [Résolu] Problème de Projectiles. Auto Friendly fire
» probleme avec game maker studio et avec CBNA Bump 2
» Problème avec un objet dirigé vers un autre avec image_angle

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: