当前位置: 首页 > 知识库问答 >
问题:

Libgdx滚动平铺贴图

马奇略
2023-03-14

我想让我的libgdx地图滚动,但我不知道代码使地图滚动,请大家帮助我,我想让地图滚动像flappy bird游戏,这是我的代码,显示在屏幕上的地图

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    position.y = position.y - 4;

    if(Gdx.input.isTouched()){
        position.y = position.y +10;
    }

    if(position.y < 0){
        position.y = 0;
    }

    if(position.y > Gdx.graphics.getHeight() -70){
        position.y = Gdx.graphics.getHeight() - 70;
    }

    renderer.setView(camera);
    renderer.render();

//tells the computer when to start drawing textures
    batch.begin();
    batch.draw(Green1, position.x, position.y, 50, 50);
    batch.end();

}

@Override
public void show() {
    Green1 = new Texture("img/Green1.png");
    batch = new SpriteBatch();
    position = new Vector2(20, Gdx.graphics.getHeight());

    map = new TmxMapLoader().load("maps/map1.tmx");

    renderer = new OrthogonalTiledMapRenderer(map);

    camera = new OrthographicCamera();
}

@Override
public void hide() {


}

@Override
public void create() {
    Green1 = new Texture("img/Green.png");
    batch = new SpriteBatch();
    position = new Vector2(20, Gdx.graphics.getHeight());

}

@Override
public void resize(int width, int height) {
    camera.viewportWidth = width;
    camera.viewportHeight = height;
    camera.position.set(width/2f, height/3f, 0); //by default camera position on (0,0,0)
    camera.update();
}

@Override
public void render() {


}

@Override
public void pause() {


}

@Override
public void resume() {


}

@Override
public void dispose() {
    map.dispose();
    renderer.dispose();

}

}

共有1个答案

谷梁裕
2023-03-14

当我学习制作2D游戏时,我以明星突击为例。您可以在这里找到他们的github存储库:https://github.com/chrismorales/2d-sidescroller

 类似资料:
  • 我正在编程一个小游戏,它是基于瓷砖的。但当我渲染它的时候,有时那些瓷砖之间的一个小空间是可见的,(绿色)背景是暴露的(可以在视频中看到)。 我想知道,是否有一些双缓冲技术,可以解决这个bug,但我读到,双缓冲已经实现了。

  • 平铺贴图对象以像素表示x、y位置,以度表示旋转。 我正在从地图上加载坐标和旋转,并试图将它们指定给box2d实体。位置模型之间存在一些差异,例如平铺对象旋转以度为单位,而box2d躯干角度以弧度为单位。 如何将位置转换为BodyDef坐标x、y和角度,以便在正确的位置创建实体? 使用代码: 当旋转为0时工作,但当旋转不同于0时,主体定位不正确。 我在这里找到了一些提示: http://www.tu

  • 我已经连续6天在一个游戏引擎中工作了,重温了我在旧DOS时代制作游戏所学到的一切。然而,当时有双缓冲,您可以简单地以极快的速度重新绘制所有内容。唉,在HTML5中,这是另一个故事。 到目前为止,我的引擎有“图层”,它们是在0,0位置一个接一个地放置的画布,我在屏幕坐标0,0处一个接一个地绘制它们的上下文。这意味着,您绘制一个图层,该图层在渲染阶段被绘制(当然,如果它满足一些条件)。 我已经制作了一

  • 我正在做一个2d平板游戏。到目前为止,我已经做了一些事情。我正在使用libgdx的矩形进行基本的碰撞检测,所以考虑到我现在只有草块,我用Java制作了一个单块世界(文件读取器还没有准备好),问题是我的检测只在第一次工作,换句话说,如果我产生碰撞到一个块,它会检测到碰撞并这样做。虽然如果我在没有碰撞的情况下,让我的球员在方块顶部出现,球员将永远摔倒。 这是代码=

  • 我用这个简单的if来改变 “currentMap”是当前正在渲染的平铺贴图。“currentRoom”是指当前房间中有瓷砖贴图的房间,因为我需要更多的东西来存储房间。问题是,当我走到门口时,游戏立即以空指针关闭,然而在崩溃之前,我可以看到地图发生了变化。 完整错误报告: 一些额外的代码,这些代码在init上调用。房间-字符串的哈希图,其中包含表示门的方向的字母(键),以及表示值的平铺贴图(由于门的

  • 将数组平铺到指定的深度。 使用递归,为每个深度级别 depth 递减 1 。 使用 Array.reduce() 和 Array.concat() 来合并元素或数组。 基本情况下,depth 等于 1 停止递归。 省略第二个参数,depth 只能平铺到 1 (单层平铺) 的深度。 const flatten = (arr, depth = 1) => depth != 1 ? arr.