2010-12-15 101 views
3

Je n'arrive pas à trouver la meilleure façon de configurer une animation avec détection de collision. J'ai une version entièrement fonctionnelle de Falldown (le jeu de calculatrice populaire), en utilisant un gestionnaire et onDraw() pour dessiner des rectangles pour les lignes et une balle bitmap. Cependant, cette animation saute (semble laggy) et donc j'essaye de passer l'animation à une animation d'interpolation.animation avec détection de collision?

Ma question est conceptuelle: comment détecter les collisions au milieu d'une animation? Je vois l'animation latérale comme prenant l'une des deux voies: a) Je m'anime en très petits pas. Cependant, j'imagine que cela serait aussi mauvais que la configuration d'animation actuelle. b) Je mets une animation complètement à gauche ou à droite de l'écran, mais chaque étape de l'animation vérifie que la balle ne passe pas par une rangée.

Je fais face à un problème similaire avec le mouvement vers le bas de la balle. Est-il possible d'accéder/mettre à jour en permanence la position de la balle (stockée sous la forme d'un nombre entier) et ensuite couper l'animation à court si elle est en collision avec quelque chose? Est-il possible d'animer la balle vers le bas si et seulement si elle n'est pas au-dessus d'un morceau de la rangée? Il doit y avoir un moyen de détecter les collisions à l'intérieur de l'animation mais je ne sais pas comment. Edit: Si la classe d'animation ne convient pas pour les jeux, comment suis-je censé animer mon jeu? Comme je l'ai dit, le système handler-ondraw fait que la balle saute, même quand je règle le retard à 1 milliseconde.

+2

La classe Animation et les animations définies par android-manifest.xml ne sont pas adaptées à une utilisation dans un jeu. Ils ne font que déplacer des choses dans une interface graphique. –

+0

Vous pouvez regarder gamedev.stackexchange.com pour de meilleures réponses aux questions spécifiques au jeu. –

+0

Mark a raison ... vous ne devriez pas utiliser Animation – Snailer

Répondre

2

Un fil de discussion pour les méthodes de dessin de canevas UI et un fil de discussion pour Game Logic/Anything non lié à l'interface utilisateur. Un thread met à jour les positions des objets etc ... et l'autre thread de l'interface utilisateur les dessine sur l'écran. Dans ce domaine, votre thread de logique de jeu est continu et sur chaque chemin met à jour X, Y positionne et gère des choses comme la détection de collision etc ... Le thread dessine simplement ces positions X, Y mises à jour et dessine des bitmaps sur un canevas.

Vous pouvez utiliser SurfaceView comme canevas sur lequel dessiner la collection de bitmaps/images/sprites. Vous pouvez regarder les nombreux exemples de jeux Android fournis par Google pour un regard rapide et sale sur la façon dont cela est accompli, mais c'est généralement comment je l'ai décrit ci-dessus.

+0

Lien vers les exemples mentionnés, s'il vous plaît. – ezaspi