2016-07-25 2 views
0

Итак, я делаю свои пуль в точку и путешествую дальше. Только его действие действительно действительно странно. Это похоже на то, что расположение 0,0 находится в верхнем левом углу, а не внизу слева.Перемещение объекта в положение с пикселями - libgdx - векторная математика

Это код:

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

Я надеюсь, что кто-то может помочь мне, что я сделал неправильно с этим.

ответ

1

Gdx.input.getX() и getY() по определению обрабатывают левый верхний как 0,0. Из метода getX():

«Происхождение экрана - верхний левый угол».

Возможно, вам потребуется изучить метод unproject камеры, который принимает координаты ввода экрана и переводит их в «мировое» пространство.

+0

Да, но это для координат мыши. Спрайт думает, что внизу слева 0,0. Должно быть, это почему-то странно. EDIT: Исправлено. Просто сделал 720 - (остальное) для dy. – Martacus

Смежные вопросы