2016-07-25 10 views
0

Also mache ich meine Kugeln zu einem Punkt und reise weiter. Nur sein Handeln wirkt wirklich sehr komisch. Es ist so, als wenn man denkt, dass die 0,0-Position oben links statt links unten ist.Verschieben der Entität zu einem Ort mit Pixeln - libgdx - Vektormathematik

Dies ist der Code:

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(); 
    } 

Ich hoffe jemand kann mir helfen, was ich mit diesem falsch gemacht haben.

Antwort

1

Gdx.input.getX() und getY() per Definition behandeln Sie die obere linke als 0,0. Von der Methode getX():

"Der Bildschirmursprung ist die obere linke Ecke."

Sie müssen möglicherweise in die Unproject-Methode der Kamera schauen, die die Bildschirmeingabekoordinaten verwendet und sie in den "Welt" -Raum übersetzt.

+0

Ja, aber das ist für die Mauskoordinaten. Das Sprite denkt, dass links unten 0,0 ist. Deshalb muss es sich seltsam benehmen. EDIT: Fest .. nur 720 - (der Rest) für die dy. – Martacus