Question

Je suis à la recherche d'informations sur la façon de se déplacer (et animer) sprites 2D dans un monde de jeu isométrique, mais ont leur mouvement animé en douceur comme Voyage de tuile en tuile, plutôt que de les avoir sauter des limites d'un carrelage, aux confins de l'autre.

Un exemple de ceci serait dans le Transport Tycoon jeu, où les trains et les voitures sont souvent la moitié dans une tuile et l'autre moitié dans l'autre.

Était-ce utile?

La solution

Dessin sprites au bon endroit est pas trop difficile. La formule de projection sont les suivants:

screen_x = sprite_x - sprite_y
screen_y = (sprite_x + sprite_y) / 2 + sprite_z

sprite_x et sprite_y sont des valeurs de point fixe (ou virgule flottante si vous voulez). En général, la précision du point fixe est le nombre de pixels sur une tuile -. Donc si votre charte graphique de tuile était 32x16 (un carré de 32x32 projeté) vous aurait 5 bits de précision, à savoir 1 / 32ème d'une tuile

La partie vraiment difficile est de trier les sprites dans un ordre qui rend correctement. Si vous utilisez OpenGL pour le dessin, vous pouvez utiliser un tampon z pour rendre ce vraiment facile. En utilisant GDI, DirectX, etc, il est vraiment difficile. Transport Tycoon ne rend pas correctement les sprites dans tous les cas. Transport Tycoon original avait le moteur de rendu le plus horrible que vous avez jamais vu. Elle met en œuvre les trois niveaux de zoom sont trois instanciations d'un massif macro masm. TT a été entièrement écrit en assembleur. Je sais, parce que je l'ai porté sur Mac il y a plusieurs années (et fait une version fraîche pour le kit de dev PS1 ainsi, il fallait bien 6Mo).

P.S. L'un des petits graphiques bungalow dans le jeu était basé sur la maison Chris Sawyer vivait à l'époque. Nous avons tenté d'ajouter une Ferrari garée dans l'allée pour la version Mac que c'était la voiture qu'il a acheté les droits d'auteur.

Autres conseils

Recherchez comment faire une interpolation linéaire (il est une formule assez simple). Vous pouvez ensuite utiliser pour paramétrer la transition sur une seule [0, 1] Plage. Vous avez alors tout simplement un état dans vos sprites pour stocker les faits:

  1. Ce qu'ils sont en mouvement
  2. points de départ et de fin
  3. début et la fin (ou l'heure de début et la durée

et chaque image vous pouvez dessiner dans la position correcte à l'aide d'une interpolation à partir du point de départ au point final. Une fois que vous avez dépassé la durée, l'image-objet se alors mis à jour ne pas être en mouvement et positionné dans le point final / tuile.

Pourquoi pensez-vous que ça va sauter de la tuile en tuile? Vous pouvez placer l'image-objet à tout x, y coordonner.

Tout d'abord créer votre tampon d'écran d'arrière-plan, puis placez vos sprites sur le dessus de celui-ci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top