/ / Wykonywanie spritów w kierunku przeciwnym do wektora - java, libgdx

Tworzenie sprite'ów przesuwa się w kierunku przeciwnym do wektora - java, libgdx

Mam sprite'a, który porusza się od lewego dolnego rogu ekranu do prawego górnego rogu. To, co chcę wiedzieć, to jak sprawiłbym, żeby się odwrócił i podążał w przeciwnym kierunku, i kontynuował tę pętlę.

Próbowałem negować kierunek wektora, ale to nie działa.

To, co mam teraz:

public void create() {
// Game Initialization
v = new Vector2(Gdx.graphics.getWidth() - 0, Gdx.graphics.getHeight() - 0);
v.nor();
v.scl(100);

spriteBatch = new SpriteBatch();
bug = new Sprite(new Texture("EnemyBug.png"));
bug.setSize(50, 85);
bug.setOrigin(0,0);//Gdx.graphics.getHeight() / 5, Gdx.graphics.getHeight() / 5);
bug.setPosition(1,1);//Gdx.graphics.getWidth() - 50, Gdx.graphics.getHeight() - 50);
bug.rotate(v.angle());

rotDeg = 5;
}

@Override
public void render() {
// Game Loop

Gdx.gl.glClearColor(0.7f, 0.7f, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.begin();

if(bug.getX() >= (int)(Gdx.graphics.getWidth() - 100) && bug.getY() >= (int)(Gdx.graphics.getHeight() - 100)){
turn = !turn;
}
else if(bug.getX() <= 50 && bug.getY() <= 50){
turn = !turn;
}


if(!turn){
bug.translate(v.x * Gdx.graphics.getDeltaTime(), v.y * Gdx.graphics.getDeltaTime());
}
else{
bug.translate(-(v.x * Gdx.graphics.getDeltaTime()), -(v.y * Gdx.graphics.getDeltaTime()));
}

bug.translate(v.x * Gdx.graphics.getDeltaTime(), v.y * Gdx.graphics.getDeltaTime());
bug.draw(spriteBatch);
spriteBatch.end();
}

Odpowiedzi:

2 dla odpowiedzi № 1

Tłumacz dwa razy na klatkę:

if(!turn){
bug.translate(v.x * Gdx.graphics.getDeltaTime(), v.y * Gdx.graphics.getDeltaTime());
}
else{
bug.translate(-(v.x * Gdx.graphics.getDeltaTime()), -(v.y * Gdx.graphics.getDeltaTime()));
}

//REMOVE THIS LINE
bug.translate(v.x * Gdx.graphics.getDeltaTime(), v.y * Gdx.graphics.getDeltaTime());

Ta dodatkowa linia może być przyczyną twojego problemu, unieważniając twoje negatywne tłumaczenie i podwajając pozytywne.