AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Problème collision horizontale

Aller en bas 
AuteurMessage
albisse
Utilisateur confirmé: Rang *


Messages : 231

MessageSujet: Problème collision horizontale    Lun 16 Oct 2017 - 18:03

Bonjour,
Je suis de retour, j'ai un projet de jeu qui est de créer un plateformer, et donc une bonne gravité.
Comme la gravité fais pas tout je dois bien sur m’occuper des collision horizontale.
Le soucis est que je ne sais pas trop comment faire, je sais que c'est tout con mais je ne sais pas comment faire avec la méthode que je veux utiliser.
Je m'explique :
J'ai créer une variable x_speed qui a un cap de ~ 6 et donc qui augmente assez vite quand j’appuie sur Q ou D , afin de faire une sorte d'inertie celle ci baisse tout le temps.
Le problème est pour les collision envers les object de gauche et de droite , j'ai ceci :

Code:

if ( keyboard_check(ord("Q")) && !keyboard_check(ord("D"))){
   if (x_speed > -global.speed_cap)x_speed -= global.p_speed;
   sens = 0;
}

if ( keyboard_check(ord("D")) && !keyboard_check(ord("Q"))){
   if (x_speed < global.speed_cap)x_speed += global.p_speed;
   sens = 1;
}

if (x_speed > 0 )x_speed -=global.speed_i; // Inertie
if (x_speed < 0 )x_speed +=global.speed_i; // Inertie

if (!colR()){x+=x_speed;};
if (!colL()){x+=x_speed;};

// col R et L fonctionne comme ceci :
return place_meeting(x + x_speed + 1, y,gr_solid);

col L
return place_meeting(x - x_speed - 1, y,gr_solid);



Sauf que bien évidement si il n'y a pas de collision la vitesse est double, j'ai donc fais :

Code:
if ( keyboard_check(ord("Q")) && !keyboard_check(ord("D")) and !colL()){
   if (x_speed > -global.speed_cap)x_speed -= global.p_speed;
   sens = 0;
}

if ( keyboard_check(ord("D")) && !keyboard_check(ord("Q")) and !colR()){
   if (x_speed < global.speed_cap)x_speed += global.p_speed;
   sens = 1;
}

if (x_speed > 0 )x_speed -=global.speed_i; // Inertie
if (x_speed < 0 )x_speed +=global.speed_i; // Inertie


x+=x_speed;

Sauf que la mon personnage rentre dans l'objet :/

Je sais que c'est tout bète mais je ne sais pas trop comment faire :/

De plus si vous savez comme je pourrais faire pour avec un système comme celui si qui prend en charge une monté , car celui ci n'est pas pensé pour cela :/

Merci d'avance.
Et si vous avez besoin d'aide pour le nouveau site, je suis plus fort en HTML CSS PHP Wink
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: Problème collision horizontale    Lun 16 Oct 2017 - 18:26

Le problème c'est au niveau de la gestion des collisions.
Tu dois vérifier que l'objet a la position p au pas suivant ne sera pas dans un mur avant de la modifier selon la vitesse.
Une méthode simple consiste a répéter N fois le déplacement de 1 pixel (en testant les collisions), plutôt que de déplacer d'un coup de N pixels.
On peut aussi empêcher l'objet de bouger a la position suivante si celle ci le place dans un mur (mais l'objet risque de ne pas "coller" a l'obstacle).

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


Messages : 231

MessageSujet: Re: Problème collision horizontale    Lun 16 Oct 2017 - 18:32

J'ai déjà vue la boucle while de 1 px , mais je ne trouve pas sa top, c'est pour cela que j'ai repensé le scripte pour que la vélocité baisse la x_speed et donc petit a petite arriver plus ou moins a 1 px.

Citation :
On peut aussi empêcher l'objet de bouger a la position suivante si celle ci le place dans un mur (mais l'objet risque de ne pas "coller" a l'obstacle).

Oui mais je ne sais pas comment du coup , j'ai essayer pas mal de chose et je pense que c'est tout bête mais je ne sais pas comment faire :/

Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Problème collision horizontale    

Revenir en haut Aller en bas
 
Problème collision horizontale
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Les apiculteurs parlent des OGM de leur problèmes face a l'envahisseur...
» Problème application eyeliner !!!!
» Problème de déglutition
» Problème Linguistique (Conjugaison)
» pas de travail pas de problème

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: