gpt4 book ai didi

java - LibGDX,flappy bird 克隆,创建 BUTTON

转载 作者:行者123 更新时间:2023-11-30 02:45:54 26 4
gpt4 key购买 nike

我正在开发一个 flappy bird clone,我真的被我想创建的这个按钮卡住了。对不起,我知道这是一个基本问题,但我是初学者,我真的需要你的帮助。所以,游戏差不多完成了,但我不想触摸整个屏幕让小鸟跳跃,我想制作一个按钮来做同样的事情。这是我的 InputHandler 类:

public class InputHandler implements InputProcessor {

private Bird myBird;
private GameWorld myWorld;

// Ask for a reference to the Bird when InputHandler is created.
public InputHandler(GameWorld myWorld) {
// myBird now represents the gameWorld's bird.
this.myWorld = myWorld;
myBird = myWorld.getBird();
}

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {

if (myWorld.isReady()) {
myWorld.start();
}

myBird.onClick();

if (myWorld.isGameOver() || myWorld.isHighScore()) {
// Reset all variables, go to GameState.READ
myWorld.restart();
}
return true;
}

@Override
public boolean keyDown(int keycode) {
return false;
}

@Override
public boolean keyUp(int keycode) {
return false;
}

@Override
public boolean keyTyped(char character) {
return false;
}

@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return false;
}

@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}

@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}

@Override
public boolean scrolled(int amount) {
return false;
}

}

我在 GameScreen 类中创建了一个舞台和一个 Actor (按钮)(它不工作),它显示在屏幕上,但我不知道下一步该做什么。再次,对于这样一个基本的问题,我很抱歉,但我真的需要你的帮助来完成这个游戏。

public class GameScreen implements Screen {

private OrthographicCamera cam;
private int gameHeight;

Stage stage;
TextureAtlas buttonAtlas;
TextButtonStyle buttonStyle;
TextButton button;
Skin skin;
BitmapFont font;

SpriteBatch batch;

private GameWorld world;
private GameRenderer renderer;
private float runTime;


// This is the constructor, not the class declaration
public GameScreen() {

float screenWidth = Gdx.graphics.getWidth();
float screenHeight = Gdx.graphics.getHeight();
float gameWidth = 544;
float gameHeight = screenHeight / (screenWidth / gameWidth);

world = new GameWorld();
renderer = new GameRenderer(world, (int) gameHeight, (int) gameWidth);

Gdx.input.setInputProcessor(new InputHandler(world));
}


@Override
public void render(float delta) {
runTime += delta;
world.update(delta);
renderer.render(runTime);

cam = new OrthographicCamera();
cam.setToOrtho(false, 544, gameHeight);
batch = new SpriteBatch();
batch.setProjectionMatrix(cam.combined);

stage.act();

batch.begin();
stage.draw();
batch.end();
}

@Override
public void resize(int width, int height) {
System.out.println("GameScreen - resizing");
}

@Override
public void show() {
System.out.println("GameScreen - show called");

stage = new Stage (Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);

font = new BitmapFont(Gdx.files.internal("data/font.fnt"), false);

skin = new Skin();
buttonAtlas = new TextureAtlas ("data/button.pack");
skin.addRegions(buttonAtlas);

buttonStyle = new TextButtonStyle();
buttonStyle.up = skin.getDrawable("button");
buttonStyle.over = skin.getDrawable("button - Copy");
buttonStyle.down = skin.getDrawable("button - Copy");
buttonStyle.font = font;

button = new TextButton("" ,buttonStyle);
stage.addActor(button);

}

@Override
public void hide() {
System.out.println("GameScreen - hide called");
}

@Override
public void pause() {
System.out.println("GameScreen - pause called");
}

@Override
public void resume() {
System.out.println("GameScreen - resume called");
}

@Override
public void dispose() {
// Leave blank
}

最佳答案

您几乎可以摆脱任何引用一般触摸输入的内容。完成后,您需要让按钮的 OnClick() 方法调用“反弹”小鸟的方法。如果您已为该函数提供了它自己的方法,它应该相对容易。

为了摆脱“为你做这件事”,我将向你展示一个 C# 示例:

boingButton_Click(Object sender, EventArgs e)
{
bird.Bounce();
}

和这样的反弹方法:

Bounce()
{
bird.Height += 4;
bird.Descend();
}

这假设您有一种方法让鸟儿下降。按钮的优点是理想情况下您不需要对其方法进行任何重载,尽管我对 Java 的理解可能是错误的。

关于java - LibGDX,flappy bird 克隆,创建 BUTTON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25036767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com