AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
johnwilliamp
Débutant


Messages : 11
Localisation : Canada
Projet Actuel : Road to liberty

MessageSujet: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Mer 26 Fév 2014 - 23:50

J'ai établi une zone de détection autour(360 degrés) de mes obj_ennemy de 100 pixel. Mais j'aimerais faire en sorte que lorsque mon obj_player appui sur SHIFT, il ne se fasse pas détecter A MOINS d'être devant l'obj_enemy, c'est a dire qu'il se ferait détecter si il était dans la moitié supérieur de la zone de détection de 360 degrés

MERCI D'AVENCE!

Voila une photo qui va peut-être mieux vous faire comprendre:


SOLUTION DONNER PAR: Craki
Code:
if dot_product(legthdir_x(1,direction),lengthdir_y(1,direction),obj_joueur.x - obj_ennemi.x,obj_joueur.y - obj_ennemi.y) > 0
    // le joueur est devant
else
    // le joueur est derrière


Dernière édition par johnwilliamp le Dim 9 Mar 2014 - 19:43, édité 3 fois
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 16:04

Le truc que tu pourrai faire c'est de changer les 100 pixel par une variable et dès que le mec appuis sur Shift la variable passe de 100 a genre 10 , au moin la zone de detection serra assez petite pour que l'énemie te voie juste quand tes a ses pieds ^^

Je te dit sa car je vais faire pareil sans doute , je voudrai faire un jeu genre spintercell ^^
Bonne chance a toi ^^
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8924
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 16:12

Faut utiliser un simple produit vectoriel.

_________________
                 
Revenir en haut Aller en bas
johnwilliamp
Débutant


Messages : 11
Localisation : Canada
Projet Actuel : Road to liberty

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 17:33

merci pour laide...mais ZUUUUUUUUUUUT cetait mon ider de faire un splintercell --'
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 17:39

Tkt je t'ai pas piquer l'idée en voyant sa , j'ai commencer hier rassure toi je ne te copie pas ^^
Je voulais même poster un problème que j'ai eu mais j'ai finalement trouver .
Revenir en haut Aller en bas
johnwilliamp
Débutant


Messages : 11
Localisation : Canada
Projet Actuel : Road to liberty

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 17:42

toutefois, si on change la variable a 10, le joueur se fera voir que a 10 pixel meme si il est devant.
onilink_, comment on fait? ou tu peut me donner quelque codes ou example svp?
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 18:25

Dans ce cas la il te faut une collision line , ( ne me demande pas pour les colision line car je ne connai pas trop trop ^^ )
Faudrait que tu mette collision circle && collision line

Perso j'ai fait sa pour que l'énnemie ne me voie pas si je suis derrière un object :

Code:
if collision_circle(self.x,self.y,500,obj_player,false,true) && !collision_line(self.x,self.y,obj_player.x,obj_player.y,obj_solid,false,true)
{
//code
}


Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2623
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 18:33

Perso je regarderai un angle entre l'une de tes frontières de ton demi-cercle dans lequel on est repéré et la droite qui passe par la position de ton ennemi et de la tienne, et si c'est compris entre 0 et pi, t'es devant, sinon t'es derrière.

Fin j'ai pas trop regardé comment on choppe l'angle, de mémoire faut donner 2 droites et il te le calcule direct mais bon...

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 19:45

En gros tu regarde la direction vers laquelle regarde ton ennemi et l'angle entre les deux points, puis tu fais la différence.
Faut utiliser image_angle, point_direction() et pour calculer la différence correctement, faut utiliser la formuile la (de sachem, ca fait 20min que je la cherche ><) : ((((angle1 - angle2) % 360) + 540) % 360) - 180
Et si c'est inférieur à 90° c'est qu'il est devant.

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
avatar

Messages : 3325
Localisation : Dans une canonnière wookie.
Projet Actuel :
Things


MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 21:44

onilink_ a écrit:
Faut utiliser un simple produit vectoriel.
Tu fais ça comment ? Je sais le faire avec des vecteurs mais en progra  zip 

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 22:34

onilink_ a écrit:
Faut utiliser un simple produit vectoriel.
Hé hé hé.

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

Messages : 8924
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 22:39

Bah avec un produit vectoriel tu peux savoir si un point est a droite ou a gauche d'un vecteur, du coup suffit de faire le test avec les deux vecteurs du cône de vision pour savoir s'il est entre les deux. Le soucis c'est qu'il te faut donc connaitre les vecteurs du cône.

Du coup tu peux utiliser un produit scalaire qui te donne l'angle qui sépare le point et le vecteur (le cosinus plus exactement).
Par contre faut des vecteurs normalisés.

Ça donnerait:
d = pos - mouse // vecteur direction
p = enemiPos - pos // vecteur ennemi/joueur

d.normalize()
p.normalize()

visible = dot(d, p) > cos( angleCone * pi/180 )

D-z a écrit:
onilink_ a écrit:
Faut utiliser un simple produit vectoriel.
Hé hé hé.
 awesome 

Y a moyen de faire plus simple avec le dot product a ton avis? Car bon normaliser les vecteurs ça demande quand même de faire 2 racines carrées...

_________________
                 
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 23:08

Puisque notre ami ici présent veut un champ de vision à 180°, la simplification est drastique :
Si D est le vecteur direction de l'ennemi et P le vecteur ennemi->joueur, alors D.P est positif ssi le joueur est devant l'ennemi. Vu qu'on compare à zéro, on se fiche des normes, pas besoin de les calculer.

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

Messages : 8924
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 23:10

Yep pour celui la je le savait, je l'avais utilisé pour faire un minecraft like :p (ne pas afficher les cubes derrière la caméra)
Impossible pour les autres angles en revanche?

_________________
                 
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 23:16

Ben, je vois pas mieux que ce que tu as exposé. À voir ce qui est mieux entre se trimballer les deux vecteurs qui bordent le cône ou faire les racines carrées (peut-être qu'on peut n'en faire qu'une d'ailleurs). Mais inutile d'optimiser plus loin je pense :p

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

Messages : 8924
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 23:29

Héhé ok :p
Par contre je profite que t'es la.

J'ai plus ou moins réussi a dompter le produit vectoriel depuis que tu m'as montré quelques trucs, par contre j'ai un peu du mal a voir a quoi ça correspond exactement. Genre le dot product c'est un angle, mais le cross product ça reviens toujours a des coordonnées 3d (vecteur normal a deux autres vecteurs).
Du coup en 2d ça correspond a quoi?
Tu m'avais dit angle relatif a deux vecteurs, mais y a pas quelque chose de plus 'rigoureux'?  Razz

_________________
                 
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1609
Localisation : Montpellier

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Jeu 27 Fév 2014 - 23:48

Le produit scalaire (dot product) c'est pas tant un angle qu'un projeté. A.B te donne la coordonnée du projeté de A sur B, avec B pour vecteur unité (et vice versa). Si les vecteurs sont normalisés, ça donne bien le cosinus (projection d'un point du cercle unité sur l'axe x)

Le produit vectoriel est bien une opération se faisant uniquement entre deux vecteurs 3D. Soient A et B deux vecteurs et C = A^B, alors C est orthogonal à A et B, |C| = |A| × |B| × |sin(AB)|, et le sens du repère (A,B,C) dépend du sens de l'angle AB.
En 2D, si on considère deux vecteurs du plan, leur troisième coordonnée est 0, et leur produit vectoriel est de la forme (0,0,z). Sa norme et le sens du repère sont respectivement la valeur absolue et le signe de z, ce qui suffit pour ces calculs. Donc le cousin 2D du produit vectoriel est assimilable à un scalaire.

Edit : pour l'anecdote, |A^B| est l'aire du parallélogramme comptant A et B comme arêtes adjacentes. Je laisse à l'assistance le soin de déterminer pourquoi.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2623
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Ven 28 Fév 2014 - 9:04

C'est assez fou de voir onilink demander des conseils et tout :')

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8924
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Ven 28 Fév 2014 - 9:18

Ah merci pour les infos, c'est déjà plus clair pour moi :p

Linky439 a écrit:
C'est assez fou de voir onilink demander des conseils et tout :')
Y a que les imbéciles qui ne demandent pas de conseils Razz

_________________
                 
Revenir en haut Aller en bas
Mobi
Utilisateur confirmé: Rang ****
avatar

Messages : 1256
Localisation : Dijon

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Ven 28 Fév 2014 - 15:36

À Ba c'est bon alors, je m'en sors bien  awesome 

_________________
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2623
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Ven 28 Fév 2014 - 16:41

onilink_ a écrit:
Linky439 a écrit:
C'est assez fou de voir onilink demander des conseils et tout :')
Y a que les imbéciles qui ne demandent pas de conseils Razz

Bien sur mais moi j'ai plus l'habitude de voir Professeur Onilink plutôt que élève Onilink gnii

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
johnwilliamp
Débutant


Messages : 11
Localisation : Canada
Projet Actuel : Road to liberty

MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   Ven 7 Mar 2014 - 18:56

bonjour tout le monde!, je reviens d'une longue semaine de vacance en forêt donc pas d'ordinateur...je suis nouveau sur GM et je comprend pas toute les réponse a ma question( MERCI A TOUS CEUX QUI ONT PRIS LE TEMPS DE RÉPONDRE)...donc j'aimerais si possible avoir un résumer de la meilleur solution a mon problème parmi celle proposer, Merci!!!
Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: [RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj   

Revenir en haut Aller en bas
 
[RESOLU]Faire une action SEULEMENT quandun obj est devant un autre obj
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Écho obligatoire ???
» Entrée à l'école sans BCG : comment faire ?
» Labradorite et réaction
» help!!que faire quand on est invité à manger chez des amis..
» Faire disparaître les pores voyants...

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: