collision - Problème collision horizontale  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 : -17%
SSD interne Crucial SSD P3 1To NVME à ...
Voir le deal
49.99 €

 

 Problème collision horizontale

Aller en bas 
2 participants
AuteurMessage
albisse
Utilisateur confirmé: Rang *



Messages : 233

collision - Problème collision horizontale  Empty
MessageSujet: Problème collision horizontale    collision - Problème collision horizontale  EmptyLun 16 Oct 2017 - 20: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 : 9183
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

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

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



Messages : 233

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





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

Revenir en haut Aller en bas
 
Problème collision horizontale
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème touche appuyée + problème collision + view
» probleme de collision
» Problème de collision
» Problème de collision :(
» Problème 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: