AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Modifié progressivement une donnée dans une variable

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

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
onilink_
Modérateur
avatar

Messages : 8962
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
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: