Youp !
Je rencontre un phénomène étrange avec une camera en Managed DirectX.
Pour commencer , je suis plutot débutant dans ce domaine.
Le projet est un jeu, un shoot’em up à scrolling vertical.
Autant dire que j’en suis au tout début , et deja je rencontre un probleme plutot étrange.
La caméra est placé à la verticale, au dessus du mesh qui constitue le décor, et la camera est dirigée vers le bas.
Pour le scrolling , il convient donc d’incrémenter la position Z de la camera, ainsi que celle du point visé.
Le mesh est assez grand et est placé en ( 0, 0, 10 ), il ne pose aucun probleme
this.Z += 0.01;
device.Transform.View = Matrix.LookAtLH(new Vector3(0,20.0f,(this.Z)), new Vector3(0.0f,0.0f,this.Z), new Vector3(0,1.0f,0));
Voilà ce qui serait sensé marcher. Or , il n’en est rien , écran noir.
Cependant, modifier séparement la position de la camera et celle du point visé, cela fonctionne. Mais ca ne donne pas un scrolling.
Je me suis creusé la tete, et j’ai fait un test, j’ai modifié cette portion de code:
this.Z += 0.01;
device.Transform.View = Matrix.LookAtLH(new Vector3(0,20.0f,(this.Z/1.00001f)), new Vector3(0.0f,0.0f,this.Z), new Vector3(0,1.0f,0));
Et chose etonnante, cela fonctionne. De façon étrange, mais cela marche.
Plus on rapproche (this.Z/x) de this.Z , plus le scrolling apparait tard à l’écran ( le resultat n’est pas evident à expliquer) pour ne plus du tout apparaitre lorsque x = 1.
Inutile de dire que pondre un code tordu et crado n’est pas le but que je poursuis meme si je suis en phase de tatonnement. Je code des petits bouts de code et une fois que j’aurais une idée correct de l’ensemble, je recoderai tout bien proprement.
Mais ce probleme m’irrite…
Si l’un d’entre vous à une idée sur ce qui se passe pour produire un phenome aussi etrange, merci d’éclairer ma lanterne !