Je vais faire un jeu comme XNA exemple jeu "Platformer1" qui vient avec le XNA. Mais j'ai besoin de plus longs niveaux qui ne rentrent pas dans l'écran (comme les niveaux Super Mario). Comment puis-je gérer ce genre de niveau? Dois-je utiliser un appareil photo 2d qui suit l'image-objet? Si je fais de cette façon, comment puis-je charger le niveau? Je suis un peu confus et je ne suis pas sûr de pouvoir expliquer clairement mon problème. J'espère que quelqu'un peut aider?XNA 2d sprite jeu d'arcade suivre
Répondre
Si vous voulez créer un jeu de défilement latéral, je regarderais en défilement parallaxe.Un rapide google/bing vous aidera à trouver beaucoup de tutoriels. En outre, une autre astuce utile est de rechercher des vidéos XNA YouTube a nous beaucoup d'affiches partagent leur code source. Voici un lien vers Microsofts Parallax Scrolling.
On dirait que vous avez quelques problèmes devant vous.
Mais j'ai besoin de plus longs niveaux qui ne tiennent pas dans l'écran (comme les niveaux super mario). Comment puis-je gérer ce genre de niveaux?
Il y a plusieurs façons de le faire, mais d'une manière assez facile serait d'avoir un tableau 2D (ou un tableau clairsemé, en fonction de la taille de vos niveaux sont) d'une classe nommée Tile
qui stocke les informations sur le carreau image, animation, ... peu importe.
Oui, vous voudrez probablement un "appareil photo". Cela peut être aussi simple que dessiner une certaine plage de ce tableau ou une caméra plus en vedette qui utilise des transformations pour effectuer un zoom arrière et de la traduction à travers votre niveau.
Espérons que cela vous aidera à démarrer.
Je l'ai fait une bonne quantité de travail XNA, et de mon expérience, il y a 2 façons de dessiner une scène 2D:
1) strictement 2D. Cette méthode est beaucoup plus facile, mais a quelques limitations. Il n'y a pas de "caméra" en soi, ce que vous faites est de tout déplacer sous la "caméra" 2D fixe. Je dis "caméra" entre guillemets car la caméra est fixe (autant que je sache). L'avantage est que c'est facile, l'inconvénient est que vous ne pouvez pas facilement zoomer ou dézoomer ou faire d'autres effets de caméra.
2) 2D en 3D. Mettre en place un monde 3D avec un plan 2D. Ceci est plus flexible, mais est également plus difficile à travailler car vous aurez besoin de configurer un monde 3D et une caméra 3D. Si c'est votre première tentative avec un jeu, je recommande fortement de ne pas utiliser cette méthode.
Je ne connais réellement que la méthode strictement 2D, et vous voudriez une liste d'objets de carte qui ont une coordonnée 2D. Vous voudriez également stocker quelle section de la carte que vous regardez, je fais ceci avec un Rectangle ou un Vector2 qui stocke ceci. Cette valeur avance à mesure que le personnage se déplace. Vous pouvez ensuite prendre la coordonnée de vos objets cartographiques 2D et soustraire le (X, Y) du coin supérieur gauche de ce que vous regardez pour déterminer la position de l'écran d'un objet. Alors:
float screenX = myMapObject.X - focusPoint.X;
float screenY = myMapObject.Y - focusPoint.Y;
Une autre chose à noter, flotteurs d'utilisation ou Vector2/3 à des emplacements de magasin, vous ne pouvez pas penser qu'il est nécessaire maintenant, mais ce sera la ligne.
Il est peut-être exagéré, mais mon projet SF utilise XNA pour dessiner une scène strictement 2D que vous pouvez vous déplacer: http://sourceforge.net/projects/asteroidoutpost/
J'espère que cela aide.
Découvrez les didacticiels de Nick Gravelyns. Ils m'ont aidé à faire des tonnes quand j'ai commencé - Cela vaut vraiment la peine d'en apprendre beaucoup sur les jeux en 2D.
Toutes les vidéos sont maintenant sur youtube here
Le tutoriel basé sur Platformer Starter Kit dans MSDN comporte une étape Adding a Scrolling Level qui vous guide à travers la création de niveaux plus longs. Le tutoriel est très détaillé, je le recommande fortement.
Je n'ai pas trouvé le tutoriel dans la section XNA Game Studio 4.0, mais les différences devraient être minimes. D'après le commentaire au bas de la page, tout ce que vous devez changer est de remplacer
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None, cameraTransform);
avec
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise, null, cameraTransform);
dans le code de tutoriel.
Vous devez passer une matrice de transformation à 'SpriteBatch.Begin' et laisser vos positions réelles dans" l'espace monde ". –
Merci pour le pourboire –