我是libgdx的新手我已经使用它仅仅2周了。我的问题是了解纹理加载是如何工作的。
我设法加载我的第一个纹理(一个玩家)使用gdx.files.internal(player.png)或沿着那些线的东西,它工作正常,我添加了一些功能,使他与if键一起移动到一边按下命令的东西,这也有效。
我的问题是在加载另一个纹理时,我想制作一个敌方玩家。我对如何做到这一点知之甚少。我想如果我做了" gdx.files.internal(enemy.png)"它会加载我的敌人纹理,但它不会,而是加载到另一个player.png纹理中。
我的问题是如何加载my enemy.png。我已经看过一些有用的教程,但我每次都会一次又一次地加载我的播放器。
请任何人帮助我理解,我已经坚持了3天
如果需要,我可以显示我的代码,以防我做错了。如果有人可以解释如何有效地使用多个纹理会有所帮助,因为我觉得我这样做的方式恰好是最佳实践
package com.mohamed.JungleFighter;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
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;
//i'm extending libgdx's built in game class which implements the activity listener
public class JungleFighterMain extends Game {
private OrthographicCamera camera;
private SpriteBatch sBatch;
private Texture player;
private Texture enemy;
//private SpriteBatch enemyBatch;
private Sprite sprite;
//just setting my game heighty and width
public static int gameWidth = 500, gameHeight = 500;
@Override
public void create () {
//camera related
camera = new OrthographicCamera(gameWidth, gameHeight);
//end of camera related
sBatch = new SpriteBatch();
player = new Texture(Gdx.files.internal("plane.png"));
sprite = new Sprite(player);
enemy = new Texture(Gdx.files.internal("enemy.png"));
sprite = new Sprite(enemy);
}
public void dispose() {
sBatch.dispose();
player.dispose();
enemy.dispose();
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// camera related
sBatch.setProjectionMatrix(camera.combined);
//keyboard functions
if(Gdx.input.isKeyPressed(Input.Keys.LEFT)){
if(Gdx.input.isKeyPressed(Input.Keys.CONTROL_LEFT))
sprite.translateX(-1f);
else
sprite.translateX(-20.1f);
}
if(Gdx.input.isKeyPressed(Input.Keys.RIGHT)){
if(Gdx.input.isKeyPressed(Input.Keys.CONTROL_LEFT))
sprite.translateX(1f);
else
sprite.translateX(20.1f);
}
sBatch.begin();
//sprite.setPosition(-200, -200);
sprite.draw(sBatch);
sBatch.end();
}
public void resize(int width, int height){
}
public void pause(){
}
public void resume(){
}
}
答案 0 :(得分:1)
我想我找到了你的问题
player = new Texture(Gdx.files.internal("plane.png"));
sprite = new Sprite(player);
enemy = new Texture(Gdx.files.internal("enemy.png"));
sprite = new Sprite(enemy);
看,你只有一个精灵。如果你只想让一个敌人加载他,如果你想要两个,那就制作2个Sprites ..
player = new Texture(Gdx.files.internal("plane.png"));
sprite1 = new Sprite(player);
enemy = new Texture(Gdx.files.internal("enemy.png"));
sprite2 = new Sprite(enemy);
请记住,如果你想绘制纹理,你也可以使用
batch.draw(textureName,xPos,yPos);