texture2d에 약간 문제가 있습니다. XNA에서 그려려고합니다. 기본적으로, 나는 파워 업 "재사용 대기 효과"가 진행 중입니다. 재사용 대기 시간이 감소함에 따라 부분적으로 그려야하는 질감이 있습니다. 예를 들어 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);
당신이 그것을 볼 수 없습니다 알고 있지만, 기본적으로 출렁 거리는 움직임과 채우기로 이루어집니다. 목적지, newbounds 직사각형 등의 값을 인쇄 해 보았습니다. 그리고 그 모두가 지속적으로 증가하고 "흔들리는"것이 아닌 것처럼 보였습니다. 그래서 무슨 일이 일어나는지 잘 모르겠습니다. 흥미롭게도, 내가 위에서 채우면 그것은 일어나지 않습니다. 그러나 그 이유는 아마도 내가 그릴 때마다 목적지 위치를 변경하기 위해 수학을 수행 할 필요가 없기 때문입니다 (왜냐하면 매번 왼쪽 상단 모서리에서 그려야하기 때문입니다).
도움을 주시면 감사하겠습니다. 감사!