我正在使用libgdx进行纸牌游戏,但我遇到了僵局。
我的主板上有额外的空间,
中没有平铺地图文件。 我做了一个简单的项目来说明我的问题。 这里有一个可编辑的项目,它在其肠道https://dl.dropboxusercontent.com/u/51343591/card.zip
中显示代码public class Card extends ApplicationAdapter {
SpriteBatch batch;
TmxMapLoader tmxMapLoader;
TiledMap tiledMap;
OrthogonalTiledMapRenderer mapRenderer;
OrthographicCamera camera;
Viewport gamePort;
Sprite cardSprite;
Sprite dotSprite;
Vector3 screenPointTouched;
@Override
public void create () {
batch = new SpriteBatch();
tmxMapLoader=new TmxMapLoader();
tiledMap= tmxMapLoader.load("level1.tmx");
mapRenderer=new OrthogonalTiledMapRenderer(tiledMap);
float worldwidth=19*16;//19tiles*16pixelspertile. This is what its like on the level1.tmx file
float worldheight=12*16;//12tiles*16pixelspertile. This is what its like on the level1.tmx file
gamePort= new StretchViewport(worldwidth,worldheight,camera);//new StretchViewport(,
camera= new OrthographicCamera(10,10*(Gdx.graphics.getWidth()/Gdx.graphics.getHeight()));
camera.position.set(gamePort.getWorldWidth()/2,gamePort.getWorldHeight()/2,0);//center the camera
cardSprite=new Sprite(new Texture("badlogic.jpg"));
dotSprite=new Sprite(new Texture("dot.png"));
screenPointTouched=new Vector3();
positionCardSpriteFromFirstRectangle();
}
@Override
public void render () {
update();
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
mapRenderer.render();
batch.begin();
cardSprite.draw(batch);
dotSprite.draw(batch);
batch.end();
}
private void positionCardSpriteFromFirstRectangle() {
MapObject mo=tiledMap.getLayers().get("cardlayer").getObjects().get(0);//get the firstone onlys
Rectangle rect=((RectangleMapObject)mo).getRectangle();
cardSprite.setBounds(rect.x,rect.y,rect.width,rect.height);
}
public void update() {
camera.update();
mapRenderer.setView(camera);
if(Gdx.input.isTouched()){//handle touch event
screenPointTouched.set(Gdx.input.getX(),Gdx.input.getY(),0);
screenPointTouched=camera.unproject(screenPointTouched);
if(cardSprite.getBoundingRectangle().contains(screenPointTouched.x,screenPointTouched.y)){
System.out.println("being touched");
dotSprite.setPosition(screenPointTouched.x,screenPointTouched.y);
}
}
}
}