我正在嘗試在XNA中繪製texture2d,我遇到了一些問題。基本上,我有一個加強「冷卻補充效應」的過程。我有一個紋理,我試圖部分吸取冷卻時間。所以,例如,在完成10%的冷卻時,我只畫了10%的紋理冷卻(底部),20%完成了紋理底部的20%,等等。使用源矩形的擺動紋理
我遇到的問題是,繪製紋理時,它會在填滿時一直晃動。
請注意,以下ActiveSkillTexture
是我預先加載的填充紋理。它的大小是完全填充圖形的大小。
InterfaceDrawer.Draw
是一種調用SpriteBatch.Draw
的方法,但事先做了一些額外的工作。對於所有意圖和目的,它與SpriteBatch.Draw
相同。
Scale
是我的縮放因子,它只是0和1之間的浮點數。
MyDest
是這個紋理應該繪製的位置的預先計算位置(與平常一樣從左上角開始)。
下面是一個代碼片段:
Rectangle NewBounds = ActiveSkillTexture.Bounds;
float cooldown = GetCooldown(ActiveSkillId);
if (cooldown > 0) //cooldown timer
{
//Code that calculated cooldown percent which I'm leaving out
if (percentdone != 1) //the percentage the cooldown is done
{
//code for fill-from bottom --
float SubHeight = ActiveSkillTexture.Height * percentremaining;
float NewHeight = ActiveSkillTexture.Height * percentdone;
NewBounds.Y += (int) SubHeight;
NewBounds.Height = (int) NewHeight;
MyDest.Y += SubHeight * Scale;
}
}
if (ActiveSkillTexture != null)
InterfaceDrawer.Draw(SpriteBatch, ActiveSkillTexture, MyDest, NewBounds, Color, 0.0f, Vector2.Zero, Scale, SpriteEffects.None, 0.0f);
我知道你不能看到它,但它基本上搖晃起來,做,因爲它填滿。我嘗試打印出目的地,新建的矩形等的值,它們似乎一直在增加而不是「搖擺」,所以我不知道發生了什麼。有趣的是,如果我從頂端填充它,它不會發生。但是這可能是因爲我不需要每次繪製數據來改變目標位置(因爲它應該每次從左上角繪製)。
任何幫助將不勝感激。謝謝!