|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
Bonjour,
J'ai tenté d'adapter la fonction screenToIso (présente ici : http://www.developpez.net/forums/d88...s/#post5005921) pour mon jeu (merci à son auteur de l'avoir partagée d'ailleurs), mais je me heurte à un problème lorsqu'il s'agit de déplacer la caméra. Elle se comporte étrangement. Je dessine ma map en parcourant tous les points de l'écran ou je dois dessiner mes tiles, et en faisant un screenToIso pour récupérer le type du tile correspondant. Jusqu'ici, ca fonctionnait bien jusqu'à ce que je place un personnage. J'ai fait en sorte que la position a laquelle est centrée ma caméra soit la position du personnage que je dirige. Seulement, quand je me déplace, même si mon personnage est bien placé par rapport à la map, lui (et donc la case ou il se trouve, qui devrait être au centre de l'écran) n'est pas où il faut ... Par exemple (oui je sais ca fait un peu copier coller mes 4 phrases mais bon) : - Je bouge mon personnage vers le haut, il reste bien centré à l'écran en hauteur, mais la caméra se déplace en même temps d'une case vers la droite (le perso n'est donc plus au centre horizontalement). - Je bouge mon personnage vers le bas, il reste bien centré à l'écran en hauteur, mais la caméra se déplace en même temps d'une case vers la gauche (le perso n'est donc plus au centre horizontalement). - Je bouge mon personnage vers la gauche, il reste bien centré à l'écran en largeur, mais la caméra se déplace en même temps d'une case vers le bas (le perso n'est donc plus au centre verticalement). - Je bouge mon personnage vers la droite, il reste bien centré à l'écran en largeur, mais la caméra se déplace en même temps d'une case vers le haut (le perso n'est donc plus au centre verticalement). Notez que mes coordonnées sont un poil différentes , l'axe des x est vers le haut a droite et l'axe des y est vers le haut à gauche (donc une "rotation" de 90° vers la gauche par rapport à l'exemple présenté dans le lien pré-cité). Je suis un peu bloqué du coup, peut être quelqu'un aura-t-il une idée ... Merci d'avance. |
|
00
|
|
|
#2 |
![]() ![]() ![]() ![]() Alexandre LaurentIngénieur développement logiciels Inscription : mai 2008 Messages : 10 403 ![]() |
Bonjour,
Cela semble un problème de if / else if / else ou alors de switch / case dans lesquelles il manque les breaks. Sinon sans code ... je ne sais pas quoi dire.
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
00
|
|
|
#3 | ||||
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
Voila la fonction qui détermine les coordonnées d'une case en fonction de sa position dur l'écran (=paramètres passés à la fonction) :
(code Java) Code :
Dans Player, j'ai les 4 méthodes suivantes qui sont appellées lors de l'appui sur les touches : Code :
|
||||
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Jean-Michel BORLOTFabricant et casseur d'avions Inscription : avril 2004 Messages : 3 214 ![]() |
Salut,
Les changements de signe dans les calculs par rapport au code de base, c'est fait exprès ou pas? Ca correspond à quoi? |
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
C'est parce que je n'utilise pas le même système de coordonnées (je l'ai décrit dans le premier post). J'ai quand même testé en remettant les signes de départ mais le problème est le même.
|
|
00
|
|
|
#6 | |||||
![]() ![]() ![]() ![]() Alexandre LaurentIngénieur développement logiciels Inscription : mai 2008 Messages : 10 403 ![]() |
Citation:
Code :
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|||||
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
Si je fais ca la caméra est bien placée, effectivement, mais le personnage ne bouge plus correctement sur la map.
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
Autant pour moi, en fait même comme ca la caméra n'est pas centrée ...
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
Bon, j'ai un peu avancé. Si je remplace la première ligne de ma fonction screenToIso par ceci :
Code :
float x = -(this.camera.getX() - this.camera.getY()) * Tileset.TILE_WIDTH - this.getWidth() / 2 + screenX; Par contre si j'essaye d'appliquer la même chose à l'axe des y ca se remet a foirer sur les deux axes. |
|
00
|
|
|
#10 | ||
|
Candidat au titre de Membre du Club
![]() Sébastien Développeur Web Inscription : février 2010 Messages : 17 ![]() |
Bon ben j'ai fini par trouver la solution tout seul
Voila la code fonctionnel si quelqu'un a le meme problème : Code :
|
||
|
00
|
Copyright © 2000-2013 - www.developpez.com