0
我有一個精靈從屏幕的左下角移動到右上角。我想知道的是,我將如何讓它轉向反方向,並繼續這個循環。製作精靈在矢量的相反方向移動
我試圖否定矢量的方向,但不工作。
這是我現在所擁有的:
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());
這額外的行可能會造成您的問題,抵消你的負面翻譯和加倍:
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();
}
這是一個if語句,它只會在每個幀中執行其中的一個。你告訴我要刪除的行使精靈進入右上角,帶負向的精靈應該讓它從右上角走到左下角。 – User765876 2014-10-31 22:37:14
翻譯如果會使它走向積極的方向。另一個翻譯將使其消極。多餘的一個將永遠執行加倍積極和消極否定。 – MadEqua 2014-10-31 22:39:48
那麼我會如何實現它?我是否刪除整個if/else語句? – User765876 2014-10-31 22:42:44