[Résolu] Collision sur un jeu de plateforme Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème



AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
Le Deal du moment : -50%
Ampli Home Cinema Denon AVR-X1700H à 399€
Voir le deal
399 €

 

 [Résolu] Collision sur un jeu de plateforme

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


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 15:39

Bien le bonjour,

J'ai un petit problème, je ne sait par où commencer a vrai dire, c'est surtout ça le problème.

Imaginons que l'on ai un disque (de rayon 100 au hasard), et un petit bonhomme.

Le disque possède un champ de gravité qui attire le bonhomme, le centre de gravité étant le centre du cercle évidement. Le bonhomme subit son attraction, et une fois en contacte avec la surface du disque (son périmètre plutôt), il cesse de subir cette gravité.

Sur un jeu de plateforme normal, l'on met la gravité a 0, et la vitesse verticale a 0, ici on ne peux pas faire comme cela, et c'est ça mon problème...

Code:

if place_meeting(lengthdir_x(joueur_objet.sprite_height/2,point_direction(joueur_objet.x,joueur_objet.y,planete_objet.x,planete_objet.y)),lengthdir_y(joueur_objet.sprite_height/2,point_direction(joueur_objet.x,joueur_objet.y,planete_objet.x,planete_objet.y)),planete_objet)
    {
    contacte=1
    gravity=0
    speed=0
    }

Je suppose que le code est faux, étant donner que ma variable de test " contacte " ne vaux jamais 1.

Comment faire?

Merci.


Dernière édition par Caohimin le Mar 22 Mai 2012 - 23:22, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:29

Tu t'y connais en trigo ? Parce que ça devrais être la solution a ton problème.

Un petit exemple pour illustrer mes propos : http://www.host-a.net/u/onilink_/circle_platformer.gm6
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:41

Moi j'aurai mis le (x,y) de ton sprite en bas au centre. Soient (a,b) les coor du centre du cercle de rayon r.

c=a-x;
d=b-y;
k=r/point_distance(0,0,c,d);

Puis je ferai tourner ton sprite d'un angle égal à point_direction(0,0,c,d)
Puis je ferai

if point_distance(0,0,c,d)<r
{
x=a+c*k;
y=b+d*k;
gravite=0;
vitesseh=0;
}
Bon j'ai pas trop réfléchi j'ai adapté mon code du sujet grappin, donc je me cite :
Johny Wessmuller a écrit:
Y a ptetr des erreurs, je n'ai pas testé, mais c'est de la géométrie, tu devrais pouvoir les corriger.


Dernière édition par Johny Wessmuller le Ven 18 Mai 2012 - 16:55, édité 3 fois
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:44

C'était logique... la trigo...

Excuse-moi, ça fais un bon moment que je ne me suis pas remis dans le "bain" avec les math, la physique, et GM surtout.

Je vais vite fait relire mes cours (en espérant pouvoir remettre la main dessus)

Merci pour "l'ouverture de la voie"
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:47

Bah sinon sans trigo, y a ma méthode, qui a l'avantage euh, d'être sans trigo.
En effet les fonctions trigos, qu'est-ce que ça consomme.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:53

J'ai regarder ce que tu a fais,

Je ne comprend pas ck et dk.

C'est c*k? et d*k?

Ou je plane totalement la?
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:54

oups oui c'est ça
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 16:58

Et vitesseh, c'est la vitesse horizontale.

mais pourquoi la mettre a 0?
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 17:00

Johny Wessmuller a écrit:
En effet les fonctions trigos, qu'est-ce que ça consomme.
Pas tellement en fait, ça consomme si tu les utilise vraiment beaucoup, mais un point_direction est plutôt lourd aussi.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 17:03

Il y aura un calcul de trigo par disque.

Si il y a 20 disque, et que le bonhomme doit sauter de disque en disque, ça ne risque pas de consommer des masses je pense.

Puis pour passer de 0.3 milliseconde de plus... Je ne suis pas a ça près.
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 17:17

Caohimin a écrit:
Et vitesseh, c'est la vitesse horizontale.

mais pourquoi la mettre a 0?
C'est la vitesse de ton perso en direction du centre du cercle, donc en gros ce code dit Si le perso a une partie de lui à l'intrieur du cercle, on le remet sur le cercle, et on met la gravité et la vitesse en direction du centre à 0.

En fait point_distance(a,b,x,y)=point_distance(0,0,c,d) et pareil pour point_direction. Tiens pour mieux comprendre :

[Résolu] Collision sur un jeu de plateforme Mini_452833Sanstitre
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 17:22

onilink_ a écrit:
Johny Wessmuller a écrit:
En effet les fonctions trigos, qu'est-ce que ça consomme.
Pas tellement en fait, ça consomme si tu les utilise vraiment beaucoup, mais un point_direction est plutôt lourd aussi.
Oui, c'est sûr vu que ça doit utiliser de la trigo aussi, après reste à savoir quel est le plus rapide et comment tu as fait ton code, mais te connaissant, ça doit être bien fait clinoeuil
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 17:25

Je regarde ça en rentrant, elle me plaît bien cette forme la.

Au pire j'ai la trigo 😳

Oui c'est tellement optimiser, que j'en ai mal à la tête avec son code. Je plaisante!
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 18:06

Johny Wessmuller a écrit:
Bah sinon sans trigo, y a ma méthode, qui a l'avantage euh, d'être sans trigo.
En effet les fonctions trigos, qu'est-ce que ça consomme.
Johny Wessmuller a écrit:
Oui, c'est sûr vu que ça doit utiliser de la trigo aussi
JME SUIS CONTREDIIIIIIIIIIIIT horror


En plus j'ai fait une erreur : il faut prendre c=x-a et d=y-b à mon avis

Soit O le centre du cercle et M le point (x,y) du sprite. Alors le point d'intersection I=(e,f) du cercle et de la demi-droite [OM) vérifie (e,f)=O+k*OMOM est le vecteur avec la flèche du O vers le M pour un certain k réel strictement positif. Donc (e,f) vérifie (e,f)=(a,b)+k*(x-a,y-b), soit (e,f)=(a+k*(x-a),b+k*(y-b)).

Suite des explications (je suis parti, ne m'appelez pas je ne réponds plus) cool

De plus on sait que OI = r donc que OI^2=r^2, soit (e-a)^2+(f-b)^2=r^2 D'où (k*(x-a))^2+(k*(y-b))^2=r^2
On en déduit que k^2((x-a)^2+(y-b)^2)=r^2 <=> k^2=(r^2)/((x-a)^2+(y-b)^2) (on suppose que x!=a et y!=b, aussi fait gaffe à ta vitesseh)

Or racine carré((x-a)^2+(y-b)^2)=point_distance(a,b,x,y)=point_distance(0,0,c,d) D'où k=r/point-distance(0,0,c,d) Et là je me dit que j'aurais pu écrire plus vite en remplaçant y-b par d et x-a par c dans mes explications depuis le début...
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 18:13

ouh
Je lis en rentrant, j'ai pas suivis dodo
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 18:29

Lol vas-y je te la refais

Soit O=(a,b) le centre du cercle et M le point (x,y) du sprite. Alors le point d'intersection I=(e,f) du cercle et de la demi-droite [OM) vérifie (e,f)=O+k*OMOM est le vecteur avec la flèche du O vers le M pour un certain k réel strictement positif.

Ce point d'intersection est le point orange du dessin, cad l'endroit dont on souhaite trouver les coordonnées afin de mettre M là-bas s'il est à l'intérieur du cercle (if point_distance(blabla)<r). Trouvons donc ses coordonnées :

OM=(x-a,y-b)=(c,d)
Donc (e,f) vérifie (e,f)=(a,b)+k*(c,d), soit (e,f)=(a+k*c,b+k*d).

Suite des explications (je suis parti, ne m'appelez pas je ne réponds plus) cool

De plus on sait que OI = r donc que OI^2=r^2, soit (e-a)^2+(f-b)^2=r^2 D'où (a+k*c-a)^2+(b+k*d-b)^2=r^2, donc (k*c)^2+(k*d)^2=r^2
On en déduit que k^2(c^2+d^2)=r^2 <=> k^2=(r^2)/(c^2+d^2) (on suppose que (c^2+d^2!=0 donc que c!=0 et d!=0 donc que x!=a et y!=b, aussi fait gaffe à ta vitesseh)

Or racine carré(c^2+d^2)=point_distance(0,0,c,d) D'où k=r/point-distance(0,0,c,d)
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 19:19

Johny c'est parfait, seul problème (oui je sait tu ma prévenu)

J'utilise un motion_add pour la vitesse, et a partir d'une vitesse très importante, il se met a "lévité" (je suis mort de rire devant mon écran la rire )

C'est a ça que sert la vitesseh=0, pour éviter la force centrifuge?
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 20:47

Non, je ne réponds pas cool

En fait vitesseh ça n'existe pas, c'est juste pour dire "là tu stoppe le mouvement vers le centre de ton perso". A la place de vitesseh mets ce que tu ferais pour stopper le bonhomme.

Et sinon, pour déplacer le perso tu fais comment ? Moi je verrai un truc du style :

if d>=0 q=arcos(c/r);
else q=-arcos(c/r);

if keyboard_check(vk_right)
{
x=a+r*cos(q-v/r);
y=b+r*sin(q-v/r);
}
if keyboard_check(vk_left)
{
x=a+r*cos(q+v/r);
y=b+r*sin(q+v/r);
}
Avec v la vitesse.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 21:22

Johny, ton code ne fait aucun changement, il ne bouge pas...
Revenir en haut Aller en bas
Johny Wessmuller
Utilisateur confirmé: Rang *



Messages : 233

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyVen 18 Mai 2012 - 21:31

Hmm j'ai pas GM sous la main, je te conseille de faire comme onilink alors.

Pour mon code j'ai dû faire des erreurs de raisonnement, mais c'est bizarre que ça ne bouge pas quand même... Y a pourtant des attributions de x et de y différentes respectivement de x et de y...
Revenir en haut Aller en bas
PsycKho
Très bonne participation
PsycKho


Messages : 154
Projet Actuel : http://www.sharedojo.netai.net/

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 1:37

Player create
Code:

grounded=0
my_angle=0

max_speed=20

Player step
Code:

nearest_planet=planet
nearest_planet_angle=point_direction(nearest_planet.x,nearest_planet.y,x,y)

if grounded=1
{
    friction=0
    speed=0
    my_angle=nearest_planet_angle
    grounded=2
}

if grounded=2
{   
    x=nearest_planet.x+lengthdir_x(nearest_planet.r+sprite_height/2,my_angle)
    y=nearest_planet.y+lengthdir_y(nearest_planet.r+sprite_height/2,my_angle)
   
    if keyboard_check(vk_left) {my_angle+=10}
    if keyboard_check(vk_right) {my_angle-=10}
   
    if keyboard_check(vk_up) {motion_set(nearest_planet_angle,10) grounded=0}
   
    image_angle=my_angle-90
}

if grounded=0
{
    motion_add(nearest_planet_angle+180,1)
    if speed>max_speed {speed=max_speed}
    friction=.1
   
    if point_distance(x,y,nearest_planet.x,nearest_planet.y)<nearest_planet.r+sprite_height/2 {grounded=1}
}

Planet create
Code:
r=100

Planet draw
Code:
draw_set_color(c_black)
draw_circle(x,y,r,0)

draw_set_color(c_red)
draw_point(x,y)
Revenir en haut Aller en bas
http://www.sharedojo.netai.net/
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 3:57

O, je vais récupérer le code d'oni, qu'il a mis dans le fichier qu'il m'a fait parvenir, je vais le fouiller et comprendre son raisonnement avant, rien ne sert de mettre un bout de code que l'on ne comprend pas lol.
Merci a vous deux.

Ps : je ne passe pas le sujet en résolue, car je risque de poser quelque question en rapport avec son code.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 10:38

Si t'as besoin que je le commente dit le, mais normalement si tu sais que les lengthdir c'est des cos et des sin, tu devrais ne pas avoir de soucis.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 15:42

Faudrais juste que je revoie un peu mes cours... Lol

J'imagine que vous avez passer la terminale?
Après ma 3ème je suis passer par un CAP moi, donc pas les même cours du tout.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 15:59

Ouaip c'est ça, mais normalement la trigo on en fait au collège non ?
Mais c'est vrai que les nombres complexes permettent de mieux comprendre le principe pour tout ce qui est les rotations et tout.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 16:35

Oui 3eme et 4ème, mais ça fait un moment le collège, lol.
Je vais bien trouver 2-3 cour sur le net.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptySam 19 Mai 2012 - 17:57

Désoler psyckho je n'avais pas vue, j'essayerais à l'occasion.
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


Messages : 134
Localisation : Au coeur de cette charmante demoiselle.

[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme EmptyMar 22 Mai 2012 - 23:22

Le problème est résolue.

Merci a Onilink et a Jonas pour leurs aident!
Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu] Collision sur un jeu de plateforme Empty
MessageSujet: Re: [Résolu] Collision sur un jeu de plateforme   [Résolu] Collision sur un jeu de plateforme Empty

Revenir en haut Aller en bas
 
[Résolu] Collision sur un jeu de plateforme
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Jeu de plateforme - Smooth Collision
» probleme colision jeux de plateforme [resolu]
» [Résolu] Collision en GML
» [Résolu] - Help: Jeu de Plateforme : Menu fixe
» Plateforme un sens et pentes[Résolu]

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: