2010-11-01 4 views
0

Je suis en train de développer un jeu de défilement horizontal pour Android impliquant de nombreuses textures. Je pensais si je pouvais créer un calque séparé, une couleur unique (très semblable à un effet d'écran vert) faire un collidable et le rendre invisible pour le joueur.Jeu de couleurs Java/Android à assembler

(couche d'avant-plan) image visuelle

(2ème couche) copie collidable de couche de premier plan avec le personnage principal

(3ème couche) Image de fond

Je ne sais pas si cela est possible ou comment le mettre en œuvre efficacement, l'idée m'est venue un jour au hasard.

concernant l'avenir, Merci

Répondre

1

Je suppose que votre jeu est entièrement en 2D, en utilisant soit-bit blits ou quadriceps (deux triangles 3D toujours alignés à l'écran) comme-sprites. Au fil des ans, il y a eu beaucoup de programmes pour faire la détection de collision en utilisant les données d'image réelles, que ce soit de l'arrière-plan ou la définition de sprite elle-même. Si vous avez un accès direct à la RAM vidéo, la lecture de la position d'un pixel peut indiquer rapidement si vous êtes entré en collision ou non, ce qui rend la précision au pixel près impossible avec des zones de délimitation. Cependant, il y a des problèmes qui compliquent énormément ceci: déterminer avec quel vous êtes entré en collision, ou si votre vitesse vous amène beaucoup de pixels dans un objet graphique, ou si elle est mince et que vous la traversez, ou comment déterminer un angle En utilisant le matériel graphique 3D et les quadruples, vous pouvez potentiellement changer les états de rendu, en les rendant en monochrome à une texture hors écran, ce qui donne le deuxième calque collable que vous avez décrit. Pourtant, cette texture est alors résidente dans la mémoire graphique, qui n'est pas librement/facilement accessible comme la mémoire de votre système. Et obtenir ces données sur le bus est lent. Il est également coûteux, nécessitant un passage de rendu supplémentaire complet (pire des cas, réduire de moitié votre fréquence d'images) et vous avez utilisé toute la RAM graphique supplémentaire ... tout simplement pour faire quelque chose comme la détection de collision. Il existe de bien meilleurs schémas, notamment en utilisant des structures de données.

Il est préférable d'utiliser des cadres de délimitation ou même une hiérarchie de zones de sous-limites. Après cela, vous pouvez déterminer si vous avez atterri de l'autre côté, par exemple, d'une ligne inclinée, ne nécessitant que des opérations de division/addition. Votre jeu gère déjà tous les sprites que vous déplacez, donc intégrez des structures de données pour aider votre détection de collision. Par exemple, je viens de suggérer dans another thread l'utilisation de listes chaînées pour limiter les objets que vous devez détecter par collision les uns par rapport aux autres. Des idées comme la vôtre peuvent ne pas toujours fonctionner, mais votre pensée créatrice continue mènera à celles qui le font. Parfois vous avez juste à essayer de les coder pour le savoir!

+0

D'accord, je vois ce que vous voulez dire. Je vais regarder dans les boîtes et les cercles de délimitation. THX – Mr13p

Questions connexes