AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Modifié progressivement une donnée dans une variable

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Fostraceur
Pas mal


Messages : 33

MessageSujet: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 11:24

Salut les gens ,Encore une question ,mais super simple (je penses) ce coup ci .

Je cherche juste a modifié progressivement une valeur dans une variable ,exemple :

Une IA cours après le joueur ,son image_angle dépend de sa direction ,sauf que du coup si l'ia ce met d'un coup a inverser sa direction pour n'importe quel raison on s'en fiche , donc ,image_angle ce retrouve de 90 a 270 ° en une step ce qui fais très "robot" ,et du coup je cherche comment progressivement changer cet valeur pour passer de 90 a 270 ° en plusieurs step ( par exemple 10 points par step ,tout ça n'est qu'un exemple pour vous faire comprendre l'idée )

Du coup je penses ça donne une truc genre :

image_angle = prog(direction)

sauf que je connais pas du tout le terme "prog" qui fais tout ça ,merci encore a onilink qui sera le premier a répondre ^^
Revenir en haut Aller en bas
hyper
Utilisateur confirmé: Rang ****
avatar

Messages : 1429
Localisation : Vendée

MessageSujet: Re: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 11:36

Bonjour, je suis onilink o/

Normalement, il suffit de faire la moyenne entre la valeur de départ et la valeur d'arrivée :
Code:
variable = (variable + nouvelle_variable)/2
Pour un truc fluide, on change la valeur beaucoup plus progressivement, c'est-à-dire augmenter le poids de l'ancienne valeur :
Code:
variable = (variable*15 + nouvelle_variable)/16

Ici, on remplace variable par image_angle et nouvelle_variable par direction.
Ce type de code marche bien pour les positions, mais pour ce qui est des directions il faut gérer le passage de 360° à 0°, et c'est là où oni peut intervenir car j'avais le même problème avant et je ne me souviens plus de la solution ou s'il y en avait Razz

_________________
> L'IRC du CBNA
côt
Revenir en haut Aller en bas
https://hyperdev.wordpress.com/
onilink_
Modérateur
avatar

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

MessageSujet: Re: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 14:20

C'est quoi ce vol d'identité hyper la.

Sinon ça s'appelle une interpolation linéaire, et de base tu peux utiliser lerp pour faire l'equivalent de
variable = (variable + nouvelle_variable)/2
=> variable = lerp(variable, nouvelle_variable, 0.5)

Pour les angles il faut les passer en coordonnées polaires pour pouvoir faire une interpolation qui marche:

angle = point_direction(0, 0,
 lerp(lengthdir_x(1, angle), lengthdir_x(1, nouvel_angle), 0.5),
 lerp(lengthdir_y(1, angle), lengthdir_y(1, nouvel_angle), 0.5))

_________________
                 
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: Re: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 14:33

Merci onilink² ,je vais tester tout ça (j'étais presque sur que c'était lerp en plus ,mais j'arrivais pas a comprendre la fonction ) je vous redis ça.
Revenir en haut Aller en bas
Fostraceur
Pas mal


Messages : 33

MessageSujet: re   Mer 8 Fév 2017 - 15:16

J'ai trouvé ça aussi :

image_angle += sin(degtorad(nouvel_angle - image_angle)) * vitesse de rotation ;
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Modifié progressivement une donnée dans une variable   

Revenir en haut Aller en bas
 
Modifié progressivement une donnée dans une variable
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» image dans une variable
» [Résolu]Plusieurs variables dans une variable pour faire un inv?
» Perte de données dans la lecture fichiers CSV dans GARMIN 1490T
» [Résolu] C/C un texte variable ?
» Help [RESOLU]

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: