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

在LibGDX中移动精灵

子车飞文
2023-03-14

我在Java和Slick2D方面有几年的经验,我正试图将一个游戏移植到libgdx,因为它是一个更好的库。然而,我有一个简单的问题在屏幕上移动精灵。这个应用编程接口一定有一些我不理解的范例。我将我的代码提炼成以下内容。它识别输入,并在我的整个实体和网络系统中运行它,无论是在服务器上还是从服务器上,但是精灵保持在同一个位置。任何帮助都会很棒。

我的create()方法:

public void create() {
    //Check to see if we are using external server or localhost
    ClientNetworkManager.setLocalhostAsHost(Constant.useLocalhost, this);

    //Begin application setup
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();

    camera = new OrthographicCamera(1280,900);
    batch = new SpriteBatch();


    //Load assets into memory
    texture = new Texture(Gdx.files.internal("Sprites/Ash.png"));
    //texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

    sprite = new Sprite(texture);
    sprite.setSize(256,256);
    sprite.setPosition(44, 666);


    //Begin external network setup
    setPlayerPointer(null);
    this.connection = new ClientConnectionThread(this);
    getClientConnectionThread().setCurrentPing(0);
}


My render() method:

        public void render() {
                //Render logic
                Gdx.gl.glClearColor(1, 1, 1, 1);
                Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

                if (connection.isActive() && !Constant.performEssentialTasksOnly) {
                    InputManager.handlePlayerInput(this);
                    batch.setProjectionMatrix(camera.combined);
                    camera.update();
                    batch.begin();

                    batch.draw(sprite,playerPointer.getCurrentX(),playerPointer.getCurrentY());
                    System.out.println(playerPointer.getCurrentX());
                    batch.end();
                }
    }

getCurrentX/Y方法的值都报告正确,所以这不是问题所在。我觉得这一定是显而易见的。

共有2个答案

邢冷勋
2023-03-14

你可以打电话

sprite.setX(xpos);

改变实际位置。

如果要使用tiledmap,请不要忘记输入正确的SpriteBatch,它应该由renderer.getSpriteBatch()方法返回。

袁良弼
2023-03-14

你没有使用精灵位置来渲染它,你实际上是在使用它,就像它是一个常规的纹理区域一样。

batch.draw(sprite,playerPointer.getCurrentX(),playerPointer.getCurrentY());
System.out.println(playerPointer.getCurrentX());

你在哪里换这个球员?

多这样做:

sprite.setPosition(playerPointer.getCurrentX(),playerPointer.getCurrentY())
sprite.draw(batch);

但问题是playerPointer没有正确的值(它们没有改变)。

 类似资料:
  • 移动精灵 现在你知道了如何展示精灵,但是让它们移动呢?很简单:使用Pixi的ticker。这被称为 游戏循环 。任何在游戏循环里的代码都会1秒更新60次。你可以用下面的代码让 cat 精灵以每帧1像素的速率移动。 function setup() { //Start the game loop by adding the `gameLoop` function to //Pixi's `t

  • 我这里有一些代码,它需要一个精灵表,并通过吸收我的图像的长度和宽度,并通过行和列将其划分为单独的精灵。这适用于我的测试精灵表,但不是我真正要在游戏中使用的。 我的动画课在这里: 我的动画课在这里: 当我使用随身听时。png,代码完美无瑕。但当我去使用任何其他精灵床单时,比如WalkingWoman。jpg(我不担心这个不透明),当列和行被相应地调整时,对齐是关闭的。有什么建议吗? an.png 步

  • 我有一个用WASD控制的相机,但是我一直在左右移动它。我一直在网上寻找,它说要找到一个垂直于另一个向量的向量,你改变x和y的圆,并将其中一个乘以-1。我在下面的代码中尝试过这个: 我一直在向前移动,工作得很好,实际上是在转动相机,但由于某些原因,这不起作用,老实说,我不确定它到底是做什么的,因为当我按下或(他们称之为该功能)时,相机会发疯,开始非常快速地转动,有时会向前移动,或者像100万英里以外

  • 我的任务是使用LibGdx游戏引擎在java中创建自己的碰撞物理引擎。这是自上而下的,所以忽略重力。我一直在琢磨如何对物体施加力。我通过求速度随时间的变化来求加速度。下面是如何找到x分量的加速度: 是x速度,和是一个,用于在不同时间存储速度的x分量(我使用的是均值定理)。基本上,我已经找到了x分量的加速度。现在如果我施加一个力,我做加速度*质量。这就是我完全困惑的地方。 F=ma.是的,所以我能够

  • 我正在用PyGame制作一个小游戏,相机聚焦在一个代表角色的精灵上,当按下箭头键时,地图会围绕它移动。问题是地图不动。我以前多次遇到过这个问题,我想我已经把它缩小到可能的范围,但是我不知道如何真正解决这个问题。 这是代码: 基于我过去的PyGame程序,我总是在移动被绘制到屏幕上的精灵集时遇到问题,比如我在这里所做的。即使是平庸简单的例子也会失败。我想知道的是这是为什么,我怎样才能简明扼要地画出大

  • 我是的新手。我正在努力用触碰让身体移动,一旦触碰被释放,它就必须停止移动!!使用KeyUp和KeyDown可以很好地工作,但我不知道如何使用touch实现。 这是我的密码。我是作为一门独立的课写的。下面是课程: 这是我的密码。我试着触地得分。我试图通过设定一定的速度来移动身体,但没有发生预期的结果。我不能用触摸来移动这个物体(多边形)。请帮忙。提前谢谢