AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [résolu]Programmer un ennemi à la Cave Story

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
LarryWal
Nouveau


Messages : 4
Localisation : La Bourboule
Projet Actuel : Passer moins de temps sur l'ordi'

MessageSujet: [résolu]Programmer un ennemi à la Cave Story   Jeu 1 Aoû 2013 - 11:35

Bonjour. Je suis nouveau sur ce forum et je me trouve malheureusement bloqué pour la réalisation de l'IA d'un ennemi. Je débute, j'ai suivi le tutoriel Débutant-Intermédiaire-Confirmé qui n'a que 2 parties réalisées à ce jour malheureusement encore, et je me suis mis en tête de reproduire, en guise d'exercice, un moteur physique, des contrôles... similaires à ceux de Cave Story qui selon moi est l'un des jeux de plateforme les plus accomplis. Je précise que j'évite le D&D et je compte réaliser ce projet/exercice en GML


Mais voilà, si je suis ici, c'est que je planche sur l'IA du premier ennemi rencontré de Cave Story; pour ceux qui ne connaissent/se souviennent pas de celui-ci, brève description :
-Un monstre en forme de boule immobile, qui si le héros s'approche à un certaine distance
                                                          - Change de sprite pour montrer qu'il fait pas office de tapisserie
          -si le héros s'approche encore plus près, saute vers lui.


Voilà le topo. Moi ce que je comptais faire c'est un truc du genre:

Code:
Détecter ou est le héros
S'il est à Telle_distance_1
{S'il est à droite
sprite_tourné_vers_la_droite}
else
sprite_tourné_vers_la_gauche // je ferai ça avec sprite_index

S'il est à telle_distance_2
{S'il est à droite
sauter à droite} //je vais bricoler le saut avec vitesseh et vitessev
else
sauter à gauche


Mais voilà, le problème, c'est que je n'ai aucune idée de la fonction qui met en place la zone de détection de l'IA. J'espère que quelqu'un pourra me donner celle-ci en m'expliquant ses arguments. Après pour le code, je pense pouvoir me débrouiller. Merci d'avance


Dernière édition par LarryWal le Jeu 1 Aoû 2013 - 16:53, édité 1 fois
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1336
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: [résolu]Programmer un ennemi à la Cave Story   Jeu 1 Aoû 2013 - 11:53

Tu peux accéder aux coordonnées des chaque objets. A partir de là tout est possible.
Dans un objet, les variables x et y sont ces coordonnées.
Tu peux accéder depuis un objet aux coordonnées d'un autre objet de plusieurs méthodes:
* Si l'objet est seul <nomDeLObjet>.x et <nomDeLObjet>.y renvoie les coordonnés de la première (ou dernière je ne sais pas) instance de l'objet en jeu.
* Chaque objet possède un identifiant (un entier) . Si tu peut récupéré cet entier (noté identifiant) tu accède depuis n' importe quel objet avec identifiant.x et identifiant.y.
A noté que la variable id d'un objet renvoie sont identifiant.
* Tu peut utiliser le mot clé with
exemple:
Code:
n=0
dernierx=0
with objet1
{
other.n += 1
other.dernierx=x
}
with fait une boucle sur l’ensemble des instance de objet1. Et le bloc de code interne à la particularité suivante, le variable sont les variables locale à l'instance courante de objet1. Pour utiliser les variables locales de l'instance executant with, il les faires précédé de other (comme dans l'exemple).

Voila c'est tout.

Donc pour ton problème:


Code:
if (abs(perso.x-x) <=150 and abs(perso.y-y)<=150)
{
    changer de sprite
}
devrait fonctionner (dans l'objet ennemi)

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
LarryWal
Nouveau


Messages : 4
Localisation : La Bourboule
Projet Actuel : Passer moins de temps sur l'ordi'

MessageSujet: Re: [résolu]Programmer un ennemi à la Cave Story   Jeu 1 Aoû 2013 - 14:03

Ça marche parfaitement, merci Arthuro. mrgreen2 
Revenir en haut Aller en bas
LarryWal
Nouveau


Messages : 4
Localisation : La Bourboule
Projet Actuel : Passer moins de temps sur l'ordi'

MessageSujet: Re: [résolu]Programmer un ennemi à la Cave Story   Jeu 1 Aoû 2013 - 14:22

Wups. En fait la fonction marche parfaitement pour une zone rectangulaire autour de l'ennemi, mais j'aimerais faire la distinction entre la zone rectangulaire qui est à droite et à gauche de l'ennemi.
C'est possible avec la fonction abs où en faut-il une autre?
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1336
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: [résolu]Programmer un ennemi à la Cave Story   Jeu 1 Aoû 2013 - 15:28

Code:
if (abs(perso.x-x) <=150 and abs(perso.y-y)<=150)
{
    if (x>perso.x)
    {
        changer pour sprite qui regarde à gauche
    }
    else
    {
        changer pour sprite qui regarde à droite
    }
}

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
LarryWal
Nouveau


Messages : 4
Localisation : La Bourboule
Projet Actuel : Passer moins de temps sur l'ordi'

MessageSujet: Re: [résolu]Programmer un ennemi à la Cave Story   Jeu 1 Aoû 2013 - 16:52

Merci pour ton aide Arthuro. Le programme fonctionne à merveille.gnii 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: [résolu]Programmer un ennemi à la Cave Story   

Revenir en haut Aller en bas
 
[résolu]Programmer un ennemi à la Cave Story
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» La cave des DUCS
» Bouilleurs de cru et rats de cave.
» Pre-order d'Avril 2011 / Story of a Fairy
» "Quand je me suis retrouvée à la cave à 13 ans,j'ai compris ce qu'allait être mon quotidien"
» Emission a la c** mais j'avoue je regarde - Secret Story

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: