所以我使子弹走到了更远的距离。只有它的表演真的很奇怪。就像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/