2012-04-11 2 views
0

Je traduis dans le rendu de ma classe principale. Comment obtenir la position de la souris en fonction de la traduction?Java Slick2d - Comment traduire les coordonnées de la souris aux coordonnées du monde

public void render(GameContainer gc, Graphics g) 
     throws SlickException 
{ 
    float centerX = 800/2; 
    float centerY = 600/2; 
    g.translate(centerX, centerY); 
    g.translate(-player.playerX, -player.playerY); 
    gen.render(g); 
    player.render(g); 
} 

playerX = 800 /2 - sprite.getWidth(); 
playerY = 600 /2 - sprite.getHeight(); 

mettre à jour la position du joueur sur KEYDOWN par .2f * delta

image pour aider à expliquer

i92.photobucket.com/albums/l22/occ31191/Untitled- 4.png

+0

Pouvez-vous être plus précis? Le titre dit _mouse to world_, votre question demande l'inverse. –

+0

Je ne peux pas éditer dans une image donc j'ai téléchargé ici http://i92.photobucket.com/albums/l22/occ31191/Untitled-4.png Cela devrait aider à mieux expliquer de quoi je parle. Désolé de ne pas être clair – Corey

Répondre

1

Vous créez un jeu basé sur des tuiles, où chaque tuile semble avoir la même taille. Pour ce cas, vous n'avez pas besoin d'une non-projection généralisée.

Imaginez la carte complète. La fenêtre n'en montre qu'une partie; quelque part, vous devez stocker les (x,y) décimales de la fenêtre dans la carte complète. Les coordonnées de la souris étant relatives à la fenêtre d'affichage, vous devez ajouter ce décalage aux coordonnées de la souris. Maintenant, vous pouvez facilement obtenir les coordonnées des tuiles en utilisant des opérations modulo sur les coordonnées de souris décalées avec la largeur et la hauteur de la tuile.

Effectivement, il s'agit d'une transformation des coordonnées de la fenêtre en coordonnées coordonnées.

+0

Comment exactement obtenez-vous la fenêtre et le décalage? – Corey

+0

Veuillez lire l'excellent conseil de @normalocity donné dans sa réponse épique. :) La fenêtre est implicite ("camera voit"), le décalage décrit à quel point la fenêtre est décalée dans le monde. –

2

Monde = coordonnées position de la caméra + position de la souris

Position de la caméra est calculée/expliqué dans ma réponse à cette question: Slick2D and JBox2D. How to draw

+0

+1 pour ceci et le post lié. J'ai _love_ graphiques ASCII pour l'explication dans les commentaires. –

+0

Dois-je encore utiliser graphics.translate? – Corey

Questions connexes