AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -14%
Apple MacBook Air (2020) 13,3″ Puce Apple M1 ...
Voir le deal
799 €

 

 Problème de collision.

Aller en bas 
+2
Térence
Yautja
6 participants
Aller à la page : Précédent  1, 2
AuteurMessage
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Problème de collision. - Page 2 Empty
MessageSujet: Re: Problème de collision.   Problème de collision. - Page 2 EmptyMar 18 Déc 2012 - 17:33

Comment sa se fait que t'ai GM6 ?
Et sinon même avec gm8 tu peux choisir *.gmk quand t'ouvre un fichier.
Revenir en haut Aller en bas
marty
Utilisateur confirmé: Rang ***
marty


Messages : 697
Projet Actuel : laby-ereinte !

Problème de collision. - Page 2 Empty
MessageSujet: Re: Problème de collision.   Problème de collision. - Page 2 EmptyMar 18 Déc 2012 - 19:00

script 0
Spoiler:

à effacer rapidement avant que onilink ne voit cette horreur lol


Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


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

Problème de collision. - Page 2 Empty
MessageSujet: Re: Problème de collision.   Problème de collision. - Page 2 EmptyMer 19 Déc 2012 - 0:21

Bonsoir,

Le problème des jeu de plateforme, reste la collision, disons, la collision EXACT.

Le mieux lorsque tu déplace ton joueur, est de vérifier à chaque step, si il ne va pas être en collision un pixel plus loin en direction de son déplacement, avec un ou plusieurs objets.

Et c'est a partir de la que ça devient difficile.


Imaginons que notre personnage ait une vitesse de 5, et vers la droite, tu ferais une petite vérification, savoir si 5 pixel plus loin, il y a quelque chose.

Avec un peu de chance, il y aura pile 5 pixel d'espace libre, et tu pourras te retrouver pile coller au mur, mais maintenant, entre toi et le mur, si il y avais 4 pixel de libre, que tu test avant le déplacement, bien ton personnage ne bougera pas. Et côté collision, être bloquer à 4 pixel, pour un déplacement de 5... C'est ennuyeux. Et moche pour les yeux

Pour pouvoir faire ce fameux test, pixel par pixel je vais t'expliquer au complet un petit moteur que j'utilise, enfin la moitié déjà :

Code:
vitesse_verticale+=gravite
Pour le moment c'est simple, on créé la chute a cause de la gravité, que tu peux toi même changer (évite de dépasser 1, c'est hard sinon).

Code:

repeat (abs(vitesse_verticale))
{

}
Comme dit précédemment , l'on doit vérifier a chaque pixel, si il y a quelque chose, donc on va répeter (repeat), autant de fois, que de pixel qui est utilisé pour déplacer le personnage (vitesse_verticale)

PS : abs signifie Absolue, ce qui correspond a rendre le chiffre positif
Ex : abs(10)=10, abs(-2)=2


L'on va imaginer que ton personnage tombe de 10 pixels.

1er pixel (nous somme ici dans 1 seule step)

Code:

repeat (abs(vitesse_verticale))
{
    if (place_free(x,y+sign(vitesse_verticale))
    {

    }
}
On demande si il y a de la place, a x, et a y+sign(vitesse_verticale), sign renvoie 1 si la variable donnée est positive, mais elle renvoie -1 si la variable est négative.
Pour le descriptif, l'on a dit qu'il tombais, alors ici la variable vaut 1, car vitesse_verticale vaux 10.
On traduit alors, il vérifie si il n'y a rien a y+1 ( en dessous ).

Code:

repeat (abs(vitesse_verticale))
{
    if (place_free(x,y+sign(vitesse_verticale))
    {
    y+=sign(vitesse_verticale)
    }
}
Il ne reste plus qu'à déplacer le joueur, si il n'y a rien, évidemment, de 1 pixel vers le bas.

La boucle (repeat) va répéter l'opération 10 fois, si il ne touche toujours rien, il le répéteras encore. (Plus de 10 fois par la suite, étant donner que la gravité fais qu'un poids en chute, prend de la vitesse)

Mais si au milieux des 10 pixels, disons au 6 ème, un bloc fausse la vérification. Là il va falloir cesser la chute dans un premier temps, puis, couper la boucle, oui sinon elle continuera de vérifier (inutilement).
Code:
repeat (abs(vitesse_verticale))
{
    if (place_free(x,y+sign(vitesse_verticale))
    {
        y+=sign(vitesse_verticale)
    }
    else
    {
        vitesse_verticale=0
        break
    }
}
Ici, vitesse_verticale=0, fais que le joueur ne tombe plus et un break, pour stopper la boucle.

Voila pour la chute.
Evidement, les saut sont aussi gérer par le script, je te laisse réfléchir pour faire une autre boucle (repeat) qui s'occupera de la vitesse horizontale.

Bonne chance a toi.

PS : si tu ne trouve pas, je te passerais l'autre moitié du moteur.[code]

_________________
fleche_d Caohimin fleche_g
neutre

Communauté
Barbarre
Nauséabonde
Ahuri
Revenir en haut Aller en bas
Yautja
Débutant



Messages : 26

Problème de collision. - Page 2 Empty
MessageSujet: Re: Problème de collision.   Problème de collision. - Page 2 EmptyMer 19 Déc 2012 - 11:01

@marty
Merci ça fonctionne.


@Caohimin
c'est bien expliqué et sa va beaucoup m'aider. merci

je suis plus tenter par celui de caohimin.

merci de votre aide

à bientôt!


Dernière édition par Yautja le Mer 19 Déc 2012 - 11:24, édité 2 fois
Revenir en haut Aller en bas
Caohimin
Très bonne participation
Caohimin


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

Problème de collision. - Page 2 Empty
MessageSujet: Re: Problème de collision.   Problème de collision. - Page 2 EmptyMer 19 Déc 2012 - 11:22

Mais il n'y a pas de quoi. C'est un moteur connus celui la.

_________________
fleche_d Caohimin fleche_g
neutre

Communauté
Barbarre
Nauséabonde
Ahuri
Revenir en haut Aller en bas
Contenu sponsorisé





Problème de collision. - Page 2 Empty
MessageSujet: Re: Problème de collision.   Problème de collision. - Page 2 Empty

Revenir en haut Aller en bas
 
Problème de collision.
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Problème touche appuyée + problème collision + view
» probleme de collision
» Problème de collision
» Problème de collision :(
» probleme de collision

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: