Coucou
Creamy.
Je ne suis pas sur de tout saisir à ton problème, il faudrait plus de détails.
Un des moyens d'obtenir ce que tu veux peut être de ne pas toucher au
viewport, mais d'assigner une valeur fortement négative au
z du joueur. Par exemple, dans le RoomLoadBeforeFadeIn :
- Code:
-
function room_Load() {
player.z = -120; //valeur à adapter en fonction de la résolution, de la taille du sprite et de la room
}
Effet secondaire bonus, avec cette méthode tu n'as pas besoin de dessiner le bas de la room, et peut faire une room qui tiens sur un seul écran verticalement (donc dont le viewport.y est automatiquement fixe).
Pour essayer de comprendre pourquoi ta méthode (qui me semble tout à fait valide) entraine un mouvement saccadé, comment est configurée l'option
MovementLinkToAnimation du personnage joueur ? Utilise tu un module du genre
SmoothScrolling and prallax ? Ton code est il bien dans le
Repeatidly_execute_always de la
room ?
Sinon on peut essayer de coder un scrolling doux, mais ça demande plus d’effort (j'ai un peu la flemme, là. En gros, au lieu de dire Setviewport(cEgo.x+system.ViewportWidth()/2, 0), faire un Setviewport(GetViewportX() +/- 1, 0) si le viewport est décalé par rapport à la position du joueur et des bords de la room).
EDIT: Après une bonne nuit de sommeil, je suis moins sûr de mon coup pour le character.z. Pas sûr qu'il ait une influence sur le viewport... Mais comme aucune de mes rooms n'est scrollable verticalement, je ne peut pas tester chez moi.
Tiens nous au courant !