AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  

 

 collision laser (ligne)

Aller en bas 
4 participants
AuteurMessage
Evilshroom
Très bonne participation
Evilshroom


Messages : 121
Localisation : ....
Projet Actuel : ????????

collision laser (ligne) Empty
MessageSujet: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 4:51

Bonjour a tous,

J'ai un probleme dans le dévelopement de mon ptit jeu d'infiltration

Je suis incapable, malgré mes recherches, de faire un effet avec la collision (du héros) avec une ligne(laser)(la vue du garde). Je sais bien qu'il faut faire quelque chose genre if colision line, mais meme a sa...

anyway, mes objets sont le héros, le garde, et le laser messenger (qui met la distance du laser)


ps: le laser (la vue) se fait déja bloquer par le héros et par les murs. enfaite je travaille pour le fait qu'on recoive un mesage:(Je t'ai vu!) avec le recomencement de la room quand le héros entre en colision avec le laser(vu)



merci d'avance!
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 8:18

un laser, ça peux se gérer comme ça : https://cbna.forumactif.com/t9641-gml-laser_length

Sinon pour ton cas, un simple:
Code:
if (collision_line(x,y,x+lengthdir(100,direction),y+lengthdir_y(100,direction),obj_Player) && !colllision_line(x,y,x+lengthdir(100,direction),y+lengthdir_y(100,direction),obj_mur))
{
//-> détecté
}
Là, tu fais la chose suivante: tu tires une ligne depuis l'ennemi (x,y), dans la direction à laquelle il fait face (direction), avec une longueur de 100.
Si la ligne entre en collision avec le joueur, et AUCUN mur, tu es sûr que l'ennemi peux voir le joueur.

Après pour faire bien, il faudrait balancer plusieurs lignes, avec un décalage d'angle (genre à direction+10, direction-10, etc.) pour simuler un cone de vision.

[edit]Il y a pas longtemps, j'ai planché sur un sujet similaire, voilà un bout de code qui peux t'intéresser:

Code:
draw_primitive_begin(pr_trianglefan);
draw_vertex_color(x,y,draw_get_color(),0.7);
    for (d=direction-focus/2;d<direction+focus/2;d+=focus/12)
    {
        tempLength=maxLength(x,y,d,WALL,1,300);
        if (collision_line(x,y,x+lengthdir_x(tempLength,d),y+lengthdir_y(tempLength,d),argument0,0,1))
        {//if player is found
            target=obj_player;           
        }
   
    draw_vertex_color(x+lengthdir_x(tempLength,d),y+lengthdir_y(tempLength,d),draw_get_color(),0.2);
    //draw_line(x,y,x+lengthdir_x(tempLength,d),y+lengthdir_y(tempLength,d));
    }
    draw_primitive_end();

l'objet qui 'regarde' a les variables suivantes:

direction: direction où il regarde
focus: angle du cône de vision
tempLength: distance (en pixel) de l'ennemi jusqu'au prochain objet 'WALL', dans la direction d (le script maxLengt(), c'est celui dans mon premier lien, juste renommé)

En gros ce script balaye en 12 direction devant le personnage, cherche la longueur des différentes 'lignes', jusqu'au prochain objet mur, puis ce sert de ces lignes pour faire un collision_line, et voir si on trouve le perso dessus.
En prime, ça affiche le tout.

_________________
collision laser (ligne) Control-commentTous les icones de gm utilisables sur le cbna ICI  collision laser (ligne) Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Evilshroom
Très bonne participation
Evilshroom


Messages : 121
Localisation : ....
Projet Actuel : ????????

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:10

Merci, mais je mets ce code la ou? dans le joueur ou l'ennemi? Dans create ou step?
Code:
if (collision_line(x,y,x+lengthdir(100,direction),y+lengthdir_y(100,direction),obj_Player) && !colllision_line(x,y,x+lengthdir(100,direction),y+lengthdir_y(100,direction),obj_mur))
{
//-> détecté
}
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:37

à M@d:
Je n'ai pas trop réfléchi sur le truc mais pour vérifier une vision, niveau optimisation de calcule tu n'est pas mieux à créer un sprite de cône avec une surface est vérifier une collision, ensuite s'il y a une collision on vérifie la précision avec une collision line?

C'est une idée comme ça j'ai pas était confronté au problème.
Revenir en haut Aller en bas
Evilshroom
Très bonne participation
Evilshroom


Messages : 121
Localisation : ....
Projet Actuel : ????????

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:39

C'est une bonne idée, j'ai déja essayé, mais je prefere mieux le laser, merci quand meme.
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:41

Caly a écrit:
à M@d:
Je n'ai pas trop réfléchi sur le truc mais pour vérifier une vision, niveau optimisation de calcule tu n'est pas mieux à créer un sprite de cône avec une surface est vérifier une collision, ensuite s'il y a une collision on vérifie la précision avec une collision line?

C'est une idée comme ça j'ai pas était confronté au problème.

C'est effectivement une bonne idée d'optimisation: si le cône(sprite) ne rentre pas en collision avec le joueur, il est inutile de faire les autres calculs, c'est une très bonne idée!

_________________
collision laser (ligne) Control-commentTous les icones de gm utilisables sur le cbna ICI  collision laser (ligne) Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Evilshroom
Très bonne participation
Evilshroom


Messages : 121
Localisation : ....
Projet Actuel : ????????

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:46

En fin de compte, oui. Mais il faudrait juste que le cone soit dévié par les blocks....
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:54

Citation :
Mais il faudrait juste que le cone soit dévié par les blocks....
Je n'ai pas compris ce que tu veux dire.
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 16:57

Evilshroom a écrit:
En fin de compte, oui. Mais il faudrait juste que le cone soit dévié par les blocks....
Ben justement: si le cône détecte le joueur, tu affines la recherche avec la deuxième technique, en balancant des collision_lines, pour savoir si il y a un bloc entre le joueur et l'ennemi! Il faut utiliser les deux systèmes conjointement!

_________________
collision laser (ligne) Control-commentTous les icones de gm utilisables sur le cbna ICI  collision laser (ligne) Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 17:17

Un sprite ? Une soustraction d'angles est trop simple ? :p

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) EmptyMer 7 Mar 2012 - 17:43

Effectivement, c'est encore mieux, on arrive à une solution vachement bien à force Smile
Pour résumer:
-on regarde par différence d'angle si le joueur se trouve dans le cône de vision de l'ennemi
-si oui, on regarde s'il y a un mur entre le joueur et l'ennemi (un collision_line() )

et c'est fini.
J'étais parti sur de la dichotomie avec des collision_lines, parce qu'on a parlé de laser au début, alors qu'en fait, c'est vraiment pas nécessaire pour simuler la vision! (sauf si on veut dessiner cette fameuse vision) ... Quoi qu'un moteur de lumière 'basique' un peu détourné permet de dessiner un cône de vision plus précisément et facilement... Bref, on peut aller loin Smile

_________________
collision laser (ligne) Control-commentTous les icones de gm utilisables sur le cbna ICI  collision laser (ligne) Main1-change-sprite
Revenir en haut Aller en bas
http://www.lecbna.org
Contenu sponsorisé





collision laser (ligne) Empty
MessageSujet: Re: collision laser (ligne)   collision laser (ligne) Empty

Revenir en haut Aller en bas
 
collision laser (ligne)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» ligne et collision
» collision ligne problème
» BackGround remplacement BG vers autres BG ligne par ligne
» laser
» laser

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