AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Problème collision horizontale

Aller en bas 
AuteurMessage
albisse
Utilisateur confirmé: Rang *


Messages : 233

Problème collision horizontale  Empty
MessageSujet: Problème collision horizontale    Problème collision horizontale  EmptyLun 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
onilink_

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

Problème collision horizontale  Empty
MessageSujet: Re: Problème collision horizontale    Problème collision horizontale  EmptyLun 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).

_________________
Problème collision horizontale  Runningpotato1Problème collision horizontale  TvF6GED
Revenir en haut Aller en bas
albisse
Utilisateur confirmé: Rang *


Messages : 233

Problème collision horizontale  Empty
MessageSujet: Re: Problème collision horizontale    Problème collision horizontale  EmptyLun 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é




Problème collision horizontale  Empty
MessageSujet: Re: Problème collision horizontale    Problème collision horizontale  Empty

Revenir en haut Aller en bas
 
Problème collision horizontale
Revenir en haut 
Page 1 sur 1

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: