/ / Sprites bewegen sich in Richtung des Vektors - java, libgdx

Sprites bewegen sich in die entgegengesetzte Richtung des Vektors - java, libgdx

Ich habe ein Sprite, das sich vom unteren linken Bildschirmrand nach rechts oben bewegt. Was ich wissen möchte ist, wie würde ich es drehen und in die entgegengesetzte Richtung gehen, und diese Schleife fortsetzen.

Ich habe versucht, die Richtung des Vektors zu negieren, aber das funktioniert nicht.

Das, was ich gerade habe:

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

Antworten:

2 für die Antwort № 1

Sie übersetzen das Sprite zweimal pro Frame:

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

Diese zusätzliche Zeile könnte Ihr Problem verursachen, Ihre negative Übersetzung annullieren und die positive verdoppeln.