所以我使子弹走到了更远的距离。只有它的表演真的很奇怪。就像0,0位置在左上角而不是左下角一样。

这是代码:

float speed = 100;

    Vector2 direction;
    Vector2 thisPos = new Vector2(getX(), getY());
    Vector2 mousePos;

    public Bullet(){
        super();
        setSprite(sprite);
        setX(0); setY(0);
        float dx = Gdx.input.getX() - getX();
        float dy = Gdx.input.getY() - getY();
        mousePos = new Vector2(Gdx.input.getX(), Gdx.input.getY());
        direction = new Vector2(dx, dy);
        //sprite.setRotation(direction.angle(thisPos));
        direction.nor();
    }

    public void update(){
        Vector2 dirAd = new Vector2(direction);
        thisPos.x += dirAd.x * speed * Gdx.graphics.getDeltaTime();
        thisPos.y += dirAd.y * speed * Gdx.graphics.getDeltaTime();
        setPosition(thisPos.x, thisPos.y);
        super.update();
    }


我希望有人可以帮助我我做错了什么。

最佳答案

根据定义,Gdx.input.getX()和getY()确实将左上角视为0,0。从getX()方法中:

“屏幕原点是左上角。”

您可能需要研究摄影机的unproject方法,该方法将屏幕输入坐标转换为“世界”空间。

关于java - 将实体移动到具有像素的位置-libgdx- vector 数学,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38578496/

10-10 09:46