Je suis sur le point de commencer à développer un jeu à défilement horizontal où le but du joueur est de voyager le plus loin possible dans l'axe horizontal avant de toucher le sol. Notez que je n'ai pas besoin de revenir sur l'axe horizontal.
Je développe cela avec AndEngine pour Android qui utilise OpenGL et Box2d.
Avant de commencer, je dois décider quelque chose d'important: dois-je utiliser le monde autour du joueur pour simuler le mouvement ou réellement déplacer le joueur et le suivre avec les fonctionnalités de la caméra du moteur de jeu?
Les deux approches semblent avoir des forces et des retombées différentes, donc je ne sais pas laquelle est la meilleure. Par exemple, qu'est-ce qui faciliterait l'ajout de power-ups en cours de route et un arrière-plan animé agréable?
Merci!
Réponses:
Déplacez la caméra (attachée à votre lecteur). J'imagine que votre monde a plusieurs objets tels que des ennemis. Si vous vouliez déplacer le monde, vous devrez parcourir tous ces objets pour mettre à jour leur position à chaque fois que le monde bouge.
Si vous déplacez le lecteur et attachez la caméra au lecteur, l'utilisation des ressources est minimale. Le jeu atteindra sa phase de rendu, parcourra tout une fois comme il le fait à chaque image et les dessinera à la position - camera.position. La position de la caméra sera toujours égale à la position de votre joueur dans ce cas.
la source
camera.setChaseEntity(player);
pour y parvenir.Je déplace toujours l'appareil photo et je le recommande - il y a plusieurs raisons pour lesquelles je préfère cela, mais la plus importante se résume probablement à ceci:
Si vous déplacez la caméra et le lecteur, ce ne sont que deux entités qui doivent être mises à jour pour faire défiler l'écran.
Si vous déplacez le monde entier chaque fois que l'écran doit défiler, cela englobe un nombre inconnu et peut - être un grand nombre d'entités qui devront être mises à jour.
la source
C'est assez banal vraiment, cela ne fait pas vraiment de différence avec les choses que vous avez décrites.
Soit vous déplacez l'arrière-plan devant la caméra et le lecteur, soit vous déplacez le lecteur et la caméra avec lui. Je suppose qu'il y a une chose de moins à faire si vous déplacez simplement l'arrière-plan.
Bien que je suppose que si vous déplacez l'arrière-plan, vous devrez associer des micros et des ennemis à cela, ce qui est encore trivial, mais c'est quelque chose à penser.
Personnellement, je déplacerais le joueur parce que j'aime que les choses soient faites de manière plus réaliste.
la source
D'autres réponses sont bonnes, mais j'aimerais ajouter quelques points de ce qui est mieux, en espérant aider quelqu'un qui essaie de prendre la même décision pour un projet différent.
Déplacer le joueur:
player.x += 5;
(pseudocode).Déplacer le monde:
0
.0
.Au final, cela dépend du projet. Si quelqu'un crée un clone original de Mario, déplacer le monde pourrait être compliqué, alors que déplacer le joueur ne crée pas vraiment beaucoup de problèmes. Voulant faire un énorme jeu en monde ouvert, il peut être préférable de déplacer le monde à la place.
la source