2016-05-23 147 views
0

在我的遊戲中,我有一個火箭精靈,在火箭的底部有一個動畫火焰精靈,我希望火箭精靈在火箭旋轉時與火箭底部對齊。如何將一個精靈相對於另一個精靈的旋轉?

這是火箭在比賽開始的時候,一切都OK了:

Initial position

但是,當我旋轉火箭的火焰不與火箭的底部是這樣排列:

After rotation

我怎樣才能讓它對齊?

這裏是我的代碼:

// draw rocket 
    rocketSprite.setRegion(AssetLoader.rocketTexture); 
    rocketSprite.setPosition(rocket.getX(), rocket.getY()); 
    rocketSprite.setOrigin(rocket.getWidth()/2, rocket.getHeight()/2); 
    rocketSprite.setSize(rocket.getWidth(), rocket.getHeight()); 
    rocketprite.setRotation(rocket.getRotation()); 
    rocketSprite.setScale(1, 1); 
    rocketPodSprite.draw(game.batch); 


    //flame width and height 
    int w = 70; 
    int h = 20; 

    // randomly change scale of flame for effects 
    float sw = MathUtils.random(2f/7f, 1); 
    float sh = MathUtils.random(0.5f, 1); 

    // draw flame 
    flameSprite.setRegion(AssetLoader.flameTexture); 
    flameSprite.setPosition(rocket.getX() + rocket.getWidth()/2 - w, rocket.getY() - 15); 
    flameSprite.setOrigin(w, h/2); 
    flameSprite.setSize(w, h); 
    flameSprite.setRotation(rocket.getRotation()); 
    flameSprite.setScale(sw, sh); 
    flameSprite.draw(game.batch); 

回答

2

您需要更改origin - 點以防萬一,你的精靈將被旋轉。

你的問題是,火箭和火焰都圍繞自己的中心旋轉,但你更願意旋轉它們兩個圓形火箭的一個。然後你需要設置火焰精靈的起源與火箭中心的位置。

flameSprite.setOrigin(w, h/2 + rocket.getHeight()/2 + SPACE_BETWEEN_ROCKET_AND_FLAME); 

當我看到你的情況SPACE_BETWEEN_ROCKET_AND_FLAME15 - flame.height值,由於這個位置設定:

flameSprite.setPosition(rocket.getX() + rocket.getWidth()/2 - w, rocket.getY() - 15); 
+0

當我這樣做,我的精靈移動到不同的位置。我想用火焰的頂部中心隨機縮放火焰精靈。也許有一個公式可以用來翻譯火焰相對於火箭的位置? – Harry

+0

嗯這是什麼意思,它移動到不同的位置?據我所知,起源與位置沒什麼共同之處,所以它不應該這樣做 - 你能分享一些截圖嗎?如果我們正在談論另一種選擇,我認爲你應該能夠正確地使用Vector2對象和旋轉來翻譯你的火焰,雖然我很驚訝,原始操縱是不夠的...... –

相關問題