gpt4 book ai didi

android libgdx 与 Actor 一起拍摄

转载 作者:行者123 更新时间:2023-11-30 03:44:25 25 4
gpt4 key购买 nike

我不能和我的 Actor 一起拍摄。当我按住射击按钮时,我的 Actor 前面有一颗子弹,但它没有移动。我不知道如何让它像陨石一样移动......

public class Game implements ApplicationListener {
Texture meteoriteImage;
Texture shipImage;
Texture bulletImage;
SpriteBatch batch;
OrthographicCamera camera;
Rectangle ship;
Rectangle bullet;
Array<Rectangle> meteorites;
long lastMeteoriteTime;


public void create() {
meteoriteImage = new Texture(Gdx.files.internal("meteorite.png"));
shipImage = new Texture(Gdx.files.internal("ship.png"));
bulletImage = new Texture(Gdx.files.internal("bullet.png"));

camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
batch = new SpriteBatch();

ship = new Rectangle();
ship.x = 800 - 48;
ship.y = 480 / 2 - 48 / 2;
ship.width = 48;
ship.height = 48;

meteorites = new Array<Rectangle>();
spawnMeteorite();
}

private void spawnMeteorite() {
Rectangle meteorite = new Rectangle();
meteorite.y = MathUtils.random(0, 480-48);
meteorite.x = 0;
meteorite.width = 48;
meteorite.height = 48;
meteorites.add(meteorite);
lastMeteoriteTime = TimeUtils.nanoTime();
}


public void render() {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);

batch.begin();
batch.draw(shipImage, ship.x, ship.y);
for(Rectangle meteorite: meteorites) {
batch.draw(meteoriteImage, meteorite.x, meteorite.y);
}
batch.end();

if(Gdx.input.isKeyPressed(Keys.DPAD_UP)) ship.y += 200 * Gdx.graphics.getDeltaTime();
if(Gdx.input.isKeyPressed(Keys.DPAD_DOWN)) ship.y -= 200 * Gdx.graphics.getDeltaTime();
if(Gdx.input.isKeyPressed(Keys.BUTTON_Y)){
bullet = new Rectangle();
bullet.x = ship.x - 48;
bullet.y = ship.y;
bullet.width = 48;
bullet.height = 48;
batch.begin();
batch.draw(bulletImage, bullet.x, bullet.y);
batch.end();

while(bullet.x > 0){
bullet.x -= 200 * Gdx.graphics.getDeltaTime();
}
}

if(ship.x < 0) ship.x = 0;
if(ship.x > 800 - 48) ship.x = 800 - 48;
if(ship.y < 0) ship.y = 0;
if(ship.y > 480 - 48) ship.y = 480 - 48;

if(TimeUtils.nanoTime() - lastMeteoriteTime > 1000000000) spawnMeteorite();

Iterator<Rectangle> iter = meteorites.iterator();
while(iter.hasNext()) {
Rectangle meteorite = iter.next();
meteorite.x += 200 * Gdx.graphics.getDeltaTime();
if(meteorite.x + 48 < 0) iter.remove();
if(meteorite.overlaps(ship)) {

iter.remove();
}
}
}


public void dispose() {
shipImage.dispose();
meteoriteImage.dispose();
bulletImage.dispose();
batch.dispose();
}


public void resize(int width, int height) {
}


public void pause() {
}


public void resume() {
}
}

我使用了这个教程:https://code.google.com/p/libgdx/wiki/SimpleApp

最佳答案

嗯,这不是您想要的。

while(bullet.x > 0){
bullet.x -= 200 * Gdx.graphics.getDeltaTime();
}

您真的想让子弹位置动画化吗?因此,您需要将子弹作为对象添加到世界中,然后在每次调用“渲染”时更改它的 x 位置。否则你根本看不到它的动画......

关于android libgdx 与 Actor 一起拍摄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232353/

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