Régler un fixed update correctement

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

Régler un fixed update correctement

Message par Axel74 » 27 Mai 2017 07:36

Salut tout le monde !

Je continu à me creuser un peu sur l'optimisation de mon projet (mobile), en parlant aussi de peaufiner le visuel.
Toujours en 2D, je me posais la question s'il était possible qu'un Rigidbody2D (la physique d'un seul objet si vous préférez) pouvait se 'baser' sur un Fixed TimeStep différent (valeur par défaut de 0.02).

Image

Mon jeu fonctionne avec la gravité de mon joueur et ne semble pas fluide visuellement. Ça donne un effet de tremblement / saccades (je parle bien du joueur, pas de la caméra). Le TimeStep qui me convient est de 0.011 pour avoir un rendu 'smooth' de mon jeu. Pour le reste, caméra ou autre, la valeur par défaut convient très bien.

Comment faites vous sur vos projets pour ce genre de cas ? Est ce que vous changez cette valeur sur certains de vos projets ? Je sais qu'on peut donner une valeur de temps indépendant, mais de ce que j'en sais jusqu'à maintenant ça ne s'applique que pour des variable dans un script et non directement sur la physique de mon jeu.
Sinon dois je définir cette valeur comme je le souhaite et ensuite appliquer une valeur indépendante (par défaut) pour tout les FixedUpdate présents dans les scripts d'autres objets ?

Je pose la question car je doute que ce soit optimisé d'utiliser un TimeStep plus court pour tout les éléments du jeu, surtout pour un Android. Je veux bien votre avis là dessus pour être sur.
Mon jeu n'est peut être pas très gourmand mais j'aimerai le mettre en oeuvre sur ce projet, j'ai besoin (envie) d'en savoir plus à ce sujet surtout pour de futur projet et ne pas me faire surprendre une fois avoir développé l'essentiel du projet :) Ça éviterai de revenir sur les script terminé.
Douille ou l'ail que pote étaux ? Yes I like.

Avatar de l’utilisateur
Drakulo
Messages : 113
Inscription : 10 Mars 2017 22:49
Contact :

Re: Régler un fixed update correctement

Message par Drakulo » 27 Mai 2017 09:38

Hello.

Tu ne peux pas affecter un timestep différent à un seul GameObject. C'est une valeur commune dans le moteur.

Si tu ne veux pas avoir des comportements du moteur physique qui soient différents selon la vitesse d'exécution du jeu, il faut utiliser Time.deltaTime qui te donne le temps écoulé depuis la dernière boucle : https://docs.unity3d.com/ScriptReferenc ... aTime.html

En basant tes calculs là dessus et en ajoutant une composante de vitesse / force, tu es sûr que le rendu sera le même partout.

De manière générale, quand on tape dans de la physique et qu'on a ce genre de comportements (éléments qui sautent), c'est parce que certains traitements ne sont pas faits dans le FixedUpdate alors qu'ils devraient. Le mouvement de ta caméra serait pas dans un Update par hasard ?

:]
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole

Avatar de l’utilisateur
Axel74
Messages : 100
Inscription : 23 Mai 2014 16:47
Localisation : Thonon - Lyon

Re: Régler un fixed update correctement

Message par Axel74 » 27 Mai 2017 18:34

Pour répondre à ta question ma caméra se déplace bien à l'aide de la fonction FixedUpdate.
J'utilise également le Time.timeScale pour mes calculs de vitesse / force.
Je cherchais vraiment à avoir un TimeStep différent entre la physique et le reste de mon jeu. J'en demandais peut être un peu trop ::d

J'y ai pas pensé.. mais j'ai un peu changé la valeur du linear drag donc forcément ça amplifie cet effet de saccade. C'est pas grand chose mais on voit la différence :triste1:
Ayant déjà trouvé le gameplay souhaité et tout configuré, pour le moment je vais partir dans l'idée d'accélérer légèrement mon TimeStep, mais je veux bien votre avis là dessus si je ne devrai pas et comprendre pourquoi.
Douille ou l'ail que pote étaux ? Yes I like.

Répondre

Revenir vers « Unity le logiciel »