AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -17%
Casque de réalité virtuelle Meta Quest 2 ...
Voir le deal
249.99 €
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Se déplacer vers un point sans tremblements

Aller en bas 
5 participants
AuteurMessage
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

Se déplacer vers un point sans tremblements Empty
MessageSujet: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 1:28

Il y a une question qui reviens souvent sur ce forum qui est "comment utiliser move_towards_point sans que l'instance concernée ne tremble".
On répond systématiquement de jouer sur une distance approximative vers le point, j'ai était confronté à ce problème et la solution qu'on donne souvent ne me convenais pas, voici une solution qui va placer l'instance pile poil au bon endroit sans aucuns tremblement:

moveTowardsPoint
Code:
if( (x == argument0 && y == argument0)
||   point_distance(x, y, argument0, argument1) <= argument2 ){
    speed = 0;
    x = argument0;
    y = argument1;
}else
    move_towards_point(argument0, argument1, argument2);

Pour ce qui est des arguments on utilise le script comme la fonction native de GM :
Citation :
move_towards_point(x, y, sp) Déplace les instances avec la vitesse sp vers la position (x,y).


Ancien script :
Spoiler:


Dernière édition par Caly le Mer 17 Juil 2013 - 13:06, édité 1 fois
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 1:31

Elle est certes concise, mais elle fait pas mal de calculs superflus ta fonction... Ceci dit, je ne sais pas s'il y a un gain à passer de trop de calcul compilés (fonctions natives) à moins de calculs interprétés.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 10:22

Tout dépend du nombre de params attendu par la fonction en fait, mais dans mes souvenirs faire un
if(a > b) a = b est 2x plus rapide que a = min(a, b)

Surement car la fonction min attend un nombre de paramètres variable...

Après j'avais fait un bench toutes les fonctions sont a peu près équivalentes niveau perfs, les plus lentes sont juste celles avec le plus de params.


Enfin bon ici on s'en fou un peu, c'est pas comme si ce code allait être utilisé 1000x par step quoi Razz (quoi que avec certains Oups! )

_________________
Se déplacer vers un point sans tremblements Runningpotato1Se déplacer vers un point sans tremblements TvF6GED Se déplacer vers un point sans tremblements MdetltS
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 10:58

Citation :
Elle est certes concise, mais elle fait pas mal de calculs superflus ta fonction...
Tout les calcules effectués sont obligatoires pour le résultat voulus mais on peut certes rajouter une condition qui évite des calcules lorsque l'instance est déjà au bon endroit.


Code:
if( x == argument0 && y == argument0 ) return noone;

 
Citation :
 Ceci dit, je ne sais pas s'il y a un gain à passer de trop de calcul compilés (fonctions natives) à moins de calculs interprétés.
J'en ai pas la moindre idées mais comme dit Oni dans ce cas précis c'est pas vraiment méchant.

Mais pour le fun j'ai réécrit le script avec le minimum de fonctions natives :

Code:
if( x == argument0 && y == argument0 ) return noone;

var n1, n2, sp;

n1 = x - argument0;
n2 = y - argument1;

n1 *= n1;
n2 *= n2;

sp = n1 + n2;

if( sp < 0 ) sp *= -1;
    
sp = sqrt( sp );

if( sp >= argument2 ) sp = argument2; else sp = floor(sp);

move_towards_point( argument0, argument1, sp );


Par contre je laisse le soin à qui veux de tester la différence de performance des deux scripts (la flemme ).
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 15:16

Je pensais plutôt à :
Code:
if(point_distance(x, y, argument0, argument1) > argument2)
    move_towards_point(argument0, argument1, argument2);
else {
    x = argument0;
    y = argument1;
}

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 15:34

Oui c'est ce que je fait d'habitude mais l'effet dans certaines situations n'est pas le même (légère saccade).
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMar 16 Juil 2013 - 21:03

Pas normal... C'est bien un "strictement supérieur" hein. Et surtout pas la fonction distance_to_point() :p

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMer 17 Juil 2013 - 12:59

Je viens de tester les deux avec un framerate très faible pour vraiment voir la différence bha il y en as pas Smile
Et avec ta méthode on gagne un "min()" par-contre le "speed" ne se met pas automatiquement en 0 avec ton script il faut le rajouter pour éviter tout problème. 

Je remet tout ça en ordre sur le premier post, merci pour la suggestion, comme d'hab tu optimise pas mal mes trucs Very Happy
Revenir en haut Aller en bas
Kabcorp
Utilisateur confirmé: Rang **
Kabcorp


Messages : 315
Localisation : Savoie
Projet Actuel : trop...

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMer 17 Juil 2013 - 13:17

x+=(xto-x)*0.1
y+=(yto-y)*0.1

=)

_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Revenir en haut Aller en bas
http://kabcorp.fr
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMer 17 Juil 2013 - 13:23

Oui mais non awesome 
La vitesse ne sera pas constante ; elle va diminuer, et en plus tu peux pas la contrôler facilement.
M'enfin l'effet peut être pas mal, mais c'est différent de move_towards_point() Smile

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Kabcorp
Utilisateur confirmé: Rang **
Kabcorp


Messages : 315
Localisation : Savoie
Projet Actuel : trop...

Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements EmptyMer 17 Juil 2013 - 13:25

Yep c'est pour un "fade progress" value. Autant pour moi =)

_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Revenir en haut Aller en bas
http://kabcorp.fr
Contenu sponsorisé





Se déplacer vers un point sans tremblements Empty
MessageSujet: Re: Se déplacer vers un point sans tremblements   Se déplacer vers un point sans tremblements Empty

Revenir en haut Aller en bas
 
Se déplacer vers un point sans tremblements
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» déplacer un objet vers un autre (ou un point)
» déplacer vers un objet
» Déplacer un perso vers un objet par un click de souris
» Deplacer une instance et la stopper sans faire de collision
» Rotation d'angle vers un point

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: