Comment déplacer un sprite avec les touches du clavier à l'aide de libGDX?
j'ai commencé à utiliser java et libgdx et ont de ce code, très simplement, il imprime un sprite sur l'écran. Cela fonctionne parfaitement, et j'ai appris beaucoup de choses.
package com.MarioGame;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.InputProcessor;
public class Game implements ApplicationListener {
private SpriteBatch batch;
private Texture marioTexture;
private Sprite mario;
private int marioX;
private int marioY;
@Override
public void create() {
batch = new SpriteBatch();
FileHandle marioFileHandle = Gdx.files.internal("mario.png");
marioTexture = new Texture(marioFileHandle);
mario = new Sprite(marioTexture, 0, 158, 32, 64);
marioX = 0;
marioY = 0;
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(mario, marioX, marioY);
batch.end();
}
@Override
public void resume() {
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void dispose() {
}
}
Comment puis-je modifier le marioX
valeur lorsqu'un utilisateur appuie sur D
sur leur clavier?
OriginalL'auteur dotty | 2011-04-29
Vous devez vous connecter pour publier un commentaire.
Pour votre tâche à portée de main, vous pourriez même pas besoin de mettre en œuvre InputProcessor. Vous pouvez utiliser l'Entrée.isKeyPressed() dans votre méthode render() comme ceci.
Aussi noter que j'ai fait les coordonnées de la position de mario flotteurs et changé le mouvement du temps basé sur le mouvement. marioSpeed est le nombre de pixels mario doit se déplacer dans n'importe quelle direction par seconde. Gdx.les graphiques.getDeltaTime() retourne le temps écoulé depuis le dernier appel à render() en quelques secondes. Le cast vers le type int est en fait pas nécessaire dans la plupart des situations.
Btw, nous avons des forums http://www.badlogicgames.com/forum où vous demandez libgdx questions ainsi!
hth,
Mario
OriginalL'auteur badlogic
Vous pouvez utiliser l'interface
KeyListener
pour détecter l'action de clavier.OriginalL'auteur dominicbri7
Dans votre boucle de jeu méthode (peut-être de rendre ou d'en faire un) besoin d'ajouter un gestionnaire d'entrée (la mise en œuvre de InputProcessor).
La classe
InputProcessor
ont des méthodes comme:et la classe
Input.Keys
a beaucoup de statique varibles que les codes de touches.Par exemple:
Donc, mettre en œuvre* les méthodes et vérifier si des clés sont pressés et d'incrémenter ou de décrémenter X/Y de mario.
EDIT:
Vérifier ce lien:
http://code.google.com/p/libgdx/source/browse/trunk/gdx/src/com/badlogic/gdx/InputProcessor.java
http://code.google.com/p/libgdx/source/browse/trunk/gdx/src/com/badlogic/gdx/Input.java
ou, dans le coffre, comment une poignée de démos d'entrée:
http://code.google.com/p/libgdx/source/browse/#svn%2Ftrunk%2Fdemos
Espère aider
java est (natif) de la classe. Et
InputProcessor
est un GDX classe. Dans mon expérience, quand je suis à l'aide d'un moteur a toujours utilisé tout le moteur.OriginalL'auteur jotapdiez
Ma méthode préférée consiste à utiliser un InputController qui stocke toutes les touches standard prêt pour vérification.
Puis tout ce que je besoin de faire est de rendre les KeyboardController dans la méthode de création de votre jeu avec
Puis dire GDX de l'utiliser pour écouter les événements de
Enfin si je veux vérifier si une touche est pressée, je peux aller
OriginalL'auteur dfour