2011-05-07 3 views
1

Je travaille actuellement sur un jeu avec html5/js, en utilisant box2dweb pour la collision, mais je suis confronté au problème où je dois faire défiler le niveau avec le joueur. Box2d rend directement dans le contexte 2D donc je pense que dans son état actuel, il n'y a aucun moyen de déplacer la partie de rendu de la toile? En as3, vous pouvez tout mettre dans un MovieClip et changer sa position en conséquence. Donc, est-il possible en tout cas d'avoir le contrôle d'une caméra de quelque sorte ou la partie de rendu de l'objet de toile pour déplacer sa 'position' afin de garder le joueur centré à tout moment?Box2dweb, déplaçant la toile?

Merci à l'avance,

M0rph3v5

+0

Voici un exemple de canevas de décalage: http://codingowl.com/readblog.php?blogid=128 –

Répondre

1

Ouais je me suis dit, se révèle que je devais utiliser un context.translate juste avant le debugdraw et à tout « shift ». Ça fonctionne bien maintenant.

EDIT:

Le code J'utilise actuellement

  context.save(); 
      context.translate(-1*xpos+(canvas.width/2),-1*ypos+(canvas.height/2)); 
      context.rotate(cars[carid].angle); 
      context.drawImage(carSprite, -carspritewidth/2, -carspriteheight/2); 
      context.restore(); 

où xpos et ypos sont les positions x et y de la voiture, après que je tire juste le sprite de la voiture réelle à 0, 0 (avec la voiture divisé comme le centre).

+0

Pouvez-vous s'il vous plaît télécharger le code source. J'essaie la même chose que vous essayez de faire depuis longtemps. Et je n'arrive toujours pas à comprendre exactement comment bouger l'appareil photo. – Shekhar

+0

Mis à jour mon message :) – M0rph3v5

2

Box2D, par lui-même, ne tire rien, il calcule juste positions/collisions.

Il offre le "dessin de débogage", mais son but est ... le débogage. De toute façon, vous pouvez commencer à partir de là pour ajouter toutes les fonctionnalités nécessaires.

http://code.google.com/p/box2d/wiki/FAQ