Je suis nouveau dans la conception de jeux et je ne sais pas vraiment comment les choses se font. Je pense à construire un jeu iOS où un navire doit voler le plus haut possible (à des vitesses variables), collecter des power-ups, et cetera, en cours de route.
Comment aller ici? L'arrière-plan et les éléments doivent-ils défiler vers le haut ou le navire doit-il vraiment voler en déplaçant la vue avec lui?
Réponses:
Tout est relatif. Vraiment, vous transformez toujours votre vue par rapport à votre position de joueur fixe.
Donc, en oubliant l'écran pour l'instant, disons que vous avez ces 3 étapes (représentant les positions lors de leur mise à jour sur chaque boucle de jeu):
playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;
(comme x, y dans chaque cas)
Comme vous pouvez le voir, le joueur vole vers le haut ou saute et se déplace légèrement vers la droite, tandis que l'objet (qui pourrait être un powerup) tombe tout droit. Le joueur attrape la mise sous tension. Maintenant, comment dessinez-vous cela à l'écran?
Tout d'abord, supposons que vous souhaitiez que votre lecteur soit toujours au centre de l'écran. Ainsi, la vue se verrouille sur le joueur - c'est l'approche la plus simple à visualiser. La position de votre joueur sera alors toujours
screenCentre
(iescreenWidth/2, screenHeight/2
). Comment obtenez-vous alors la position à l'écran d'autres objets dans le monde?Vous pouvez voir que cette formule fonctionne même pour le joueur réel, car
(playerWorldPosition- playerWorldPosition) + screenCentre
est égal àscreenCentre
. Vous pouvez donc appliquer la même formule à chaque entité de votre jeu, en parcourant une liste. Vous pouvez utiliser cette approche simple pour développer d'autres choses (comme le décalage de la caméra, les cas où vous êtes dans le coin d'un niveau, etc.)la source