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 : 34

MessageSujet: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 10: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 : 1431

MessageSujet: Re: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 10: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

_________________
côt.
Revenir en haut Aller en bas
https://hyperdev.wordpress.com/
onilink_
Modérateur
avatar

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

MessageSujet: Re: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 13: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 : 34

MessageSujet: Re: Modifié progressivement une donnée dans une variable   Dim 5 Fév 2017 - 13: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 : 34

MessageSujet: re   Mer 8 Fév 2017 - 14: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
-
» [résolu] Comment récupèrer mes données enregistrées dans Hérédis 10 ?
» Tout pouvoir m’a été donné dans le ciel et sur la terre. — Mat. 28:18.
» Pourquoi HEREDIS ne tournerait pas sur une véritable Base de Données ?
» Donnés : chaussons antidérapant piscine (18-24 mois)
» Lorsque le Passeur se jette dans la Gueule des Enfers [PV : Artyom Volk]

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: