我正在用libgdx制作游戏。如果我触摸屏幕然后出现纹理,但我真正想做的是当我触摸特定纹理时,必须出现其他纹理。 这是我现在的代码:
public class MyGame extends InputAdapter implements ApplicationListener {
SpriteBatch batch;
Texture ball;
Texture bat;
@Override
public void create() {
ball = new Texture("ball.png");
bat = new Texture("bat.png");
batch = new SpriteBatch();
}
@Override
public void render() {
batch.begin();
if (Gdx.input.isTouched()) {
batch.draw(ball, Gdx.input.getX(), Gdx.graphics.getHeight()
- Gdx.input.getY());
batch.draw(bat, 50, 50);
batch.end();
}
}
}
这不是整个代码,只是用于显示这些纹理的代码。
我非常感谢你的帮助。 三江源
答案 0 :(得分:1)
下面的代码举例说明如果触摸在纹理区域内,您可以如何扩展当前的测试方法,但我不建议将它用于真实游戏。
作为一种理解正在发生的事情的练习是很好的,但是随着游戏变得更加复杂,以这种方式手动编码触摸区域将很快变得麻烦。
我强烈建议你熟悉libGdx中的scene2d包。该软件包具有处理所有常见2D行为的方法,例如触摸事件,移动和碰撞
像许多libGdx库一样,如果你刚开始的话,文档可能很难理解,并且没有很多教程。我建议您阅读dermetfan的Java Game Development (LibGDX)系列YouTube视频。当我开始时,它帮助我理解了很多方面。祝你好运。
SpriteBatch batch;
Texture firstTexture;
Texture secondTexture;
float firstTextureX;
float firstTextureY;
float secondTextureX;
float secondTextureY;
float touchX;
float touchY;
@Override
public void create() {
firstTexture= new Texture("texture1.png");
firstTextureX = 50;
firstTextureY = 50;
secondTexture = new Texture("texture2.png");
secondTextureX = 250;
secondTextureY = 250;
batch = new SpriteBatch();
}
@Override
public void render() {
batch.begin; // begin the batch
// draw our first texture
batch.draw(firstTexture, firstTextureX, firstTextureY);
// is the screen touched?
if (Gdx.input.isTouched()) {
// is the touch within the area of our first texture?
if (touchX > firstTextureX && touchX < (firstTextureX + firstTexture.getWidth())
&& touchY > firstTextureY && touchY < (firstTextureY + firstTexture.getHeight()) {
// the touch is within our first texture so we draw our second texture
batch.draw(secondTexture, secondTextureX, secondTextureY);
}
batch.end; // end the batch
}