Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx跟随鼠标|投影?_Java_Android - Fatal编程技术网

Java Libgdx跟随鼠标|投影?

Java Libgdx跟随鼠标|投影?,java,android,Java,Android,我试图让对象播放器不断跟随我的鼠标,但我在相机投影方面遇到了一些问题 * Displays the Game<br> */ private void showGame() { batch.setProjectionMatrix(camera.projection); batch.setTransformMatrix(camera.view); batch.begin(); bitfontBig.setColor(CurrentColor);

我试图让对象播放器不断跟随我的鼠标,但我在相机投影方面遇到了一些问题

 * Displays the Game<br>
 */
private void showGame() {


    batch.setProjectionMatrix(camera.projection);
    batch.setTransformMatrix(camera.view);

    batch.begin();
    bitfontBig.setColor(CurrentColor);
    // draw the highscore
    if (score < 10) {

        bitfontBig
                .draw(batch,
                        "0" + String.valueOf(score),
                        380 - (bitfontBig.getBounds("0"
                                + String.valueOf(score)).width / 2),
                        (1200 / 2)
                                + (bitfontBig.getBounds("0"
                                        + String.valueOf(score)).height / 2));
    } else {
        bitfontBig
                .draw(batch,
                        String.valueOf(score),
                        380 - (bitfontBig.getBounds(String.valueOf(score)).width / 2),
                        (1200 / 2)
                                + (bitfontBig.getBounds(String
                                        .valueOf(score)).height / 2));

    }

    // Draw the Spikes
    for (Spike spike : spikes) {
        if (bird.flyToTheLeftSide) {
            batch.draw(Texture_Spike_Left, (-30) + spike.size, spike.y);
        } else {
            batch.draw(Texture_Spike_Right, 672 - spike.size, spike.y);
        }
    }
    // Draw the Bird
    if (bird.flyToTheLeftSide) {
        CurrentFrame = BirdAnimation.getKeyFrame(statetime, true);

    } else {
        CurrentFrame = BirdAnimationRight.getKeyFrame(statetime, true);

    }
    batch.draw(CurrentFrame, bird.position.x, bird.position.y);

    batch.end();

    ////PLAYER 
    batch.begin();
    PlayerSprite.draw(batch);
    PlayerSprite.setPosition(Gdx.input.getX(), Gdx.input.getY());
    batch.end();




    shaperenderer.setProjectionMatrix(camera.projection);
    shaperenderer.setTransformMatrix(camera.view);
    shaperenderer.begin(ShapeType.Filled);
*显示游戏
*/ 私人游戏{ batch.setProjectionMatrix(camera.projection); batch.setTransformMatrix(camera.view); batch.begin(); bitfontBig.setColor(CurrentColor); //得分最高 如果(分数<10){ 比特方特比格 .抽签(批), “0”+字符串的值(分数), 380-(bitfontBig.getBounds(“0”) +字符串.valueOf(score)).width/2), (1200 / 2) +(bitfontBig.getBounds(“0”) +字符串.valueOf(score)).height/2); }否则{ 比特方特比格 .抽签(批), 字符串.valueOf(分数), 380-(bitfontBig.getBounds(String.valueOf(score)).width/2), (1200 / 2) +(bitfontBig.getBounds(字符串) .分值(分)、身高/2); } //拔钉子 用于(尖峰:尖峰){ 如果(鸟飞到左侧){ 批处理绘制(纹理图,左,(-30)+Spike.size,Spike.y); }否则{ 批处理绘制(纹理图右,672-Spike.size,Spike.y); } } //画鸟 如果(鸟飞到左侧){ CurrentFrame=BirdAnimation.getKeyFrame(statetime,true); }否则{ CurrentFrame=BirdAnimationRight.getKeyFrame(statetime,true); } 批量绘制(当前帧,bird.position.x,bird.position.y); batch.end(); ////玩家 batch.begin(); PlayerSprite.draw(批量); PlayerSprite.setPosition(Gdx.input.getX(),Gdx.input.getY()); batch.end(); 设置投影矩阵(camera.projection); setTransformMatrix(camera.view); 开始(ShapeType.Filled);
问题是当我向下移动鼠标时,Player对象向上移动,反之亦然。同时,我认为它有一些延迟响应

感谢您的帮助


感谢

libGDX在内部反转Y轴,因此它指向上,而不是下。此外,原点从屏幕的左上角移动到左下角。由此产生的坐标系是数学家(和大多数其他人)所使用的坐标系用于。要撤消反转,只需从屏幕高度减去y值,如下所示:

PlayerSprite.setPosition(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY());
如果玩家仍然表现怪异,请尝试只否定y值

PlayerSprite.setPosition(Gdx.input.getX(), -Gdx.input.getY());
我也会考虑维利奇的建议:

shaperenderer.setProjectionMatrix(camera.combined);
响应延迟可能是因为您在更新玩家之前绘制了该玩家。因此,用户总是看到他“在哪里”,而不是他“在哪里”。只需先更新玩家,然后绘制:

PlayerSprite.setPosition(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY());
PlayerSprite.draw(batch);

我希望我能帮上忙=)。

您是否尝试过仅设置batch.setProjectonMatrix(camera.combined);