J'essaie de faire apparaître un objet à l'endroit où la personne a touché la dernière fois. Cependant quand j'essaye de faire ainsi il apparaît au mauvais endroit. Je suppose que cela est dû au fait que les coordonnées que l'entrée revient est différent aux coordonnées d'affichage, mon code est le suivant:Appliquer le pixel Coordonnée aux coordonnées de l'écran
public class Core implements ApplicationListener, InputProcessor
{ //Has to be here otherwise the code formatting becomes buggy
private Mesh squareMesh;
private PerspectiveCamera camera;
private Texture texture;
private SpriteBatch spriteBatch;
Sprite sprite;
float moveX = 0;
private final Matrix4 viewMatrix = new Matrix4();
private final Matrix4 transformMatrix = new Matrix4();
@Override
public void create()
{
Gdx.input.setInputProcessor(this);
texture = new Texture(Gdx.files.internal("door.png"));
spriteBatch = new SpriteBatch();
sprite = new Sprite(texture);
sprite.setPosition(0, 0);
viewMatrix.setToOrtho2D(0, 0, 480, 320);
float x = 0;
float y = 0;
}
@Override
public void dispose()
{
}
@Override
public void pause()
{
}
@Override
public void render()
{
viewMatrix.setToOrtho2D(0, 0, 480, 320);
spriteBatch.setProjectionMatrix(viewMatrix);
spriteBatch.setTransformMatrix(transformMatrix);
spriteBatch.begin();
spriteBatch.disableBlending();
spriteBatch.setColor(Color.WHITE);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
//spriteBatch.draw(texture, 0, 0, 1, 1, 0, 0, texture.getWidth(),
// texture.getHeight(), false, false);
sprite.draw(spriteBatch);
spriteBatch.end();
update();
}
@Override
public void resize(int width, int height)
{
float aspectRatio = (float) width/(float) height;
camera = new PerspectiveCamera(67, 2f * aspectRatio, 2f);
}
@Override
public void resume()
{
}
public void update()
{
float delta = Gdx.graphics.getDeltaTime();
if(Gdx.input.isTouched())
{
Vector3 worldCoordinates = new Vector3(sprite.getX(), sprite.getY(), 0);
camera.unproject(worldCoordinates);
sprite.setPosition(Gdx.input.getX(), Gdx.input.getY());
float moveX = 0;
float moveY = 0;
}
}
Je recadrée ce code pour l'amour de simplicty. Je a également fait une vidéo montrant le bug: http://www.youtube.com/watch?v=m89LpwMkneI
Cela devrait être la bonne réponse. – HAL9000
Essayé la solution acceptée, mais il devient vraiment lourd une fois que votre résolution d'écran change. C'est la voie à suivre si vous ne voulez pas réécrire tous les calculs nécessaires. – MxyL
J'ai changé la réponse acceptée. Cela a été posté après que j'accepte la première réponse. – Derek