Код: Выделить всё
public override void Draw(SpriteBatch sb)
{
if (Game1.TimePassed % AnimationSpeed == 0) CurrentFrame++;
if (CurrentFrame >= FrameCount) CurrentFrame = StartFrame;
int x = AtlasDataManager.AtlasNodes[CurrentFrame].X;
int y = AtlasDataManager.AtlasNodes[CurrentFrame].Y;
int w = AtlasDataManager.AtlasNodes[CurrentFrame].W;
int h = AtlasDataManager.AtlasNodes[CurrentFrame].H;
int oX = AtlasDataManager.AtlasNodes[CurrentFrame].Ox;
int oY = AtlasDataManager.AtlasNodes[CurrentFrame].Oy;
sb.Draw(Game1.ATLAS, Pos - new Vector2(oX, oY), new Rectangle(x, y, w, h), Color.White,Rotation, new Vector2(51 / 2, 64 / 2), Vector2.One,SpriteEffects.None, 0f);
}
https://gyazo.com/47a394708ec0fb76fece1f0d0ad6afbd
Я пытался установить начало координат в центре каждого кадра, но в итоге эффект при вращении спрайта стал хуже.
Я пробовал умножить положение на отрицательный косинус и синус вращения, но, похоже, это практически не имеет никакого эффекта, хотя если я умножу положение только на отрицательный косинус вращения, анимация вернется в нормальное состояние, если перевернуть его вверх ногами.Если бы кто-нибудь мог сказать мне, как я могу объяснить вращение при смещении положения спрайтов, я был бы очень признателен
Извиняюсь, если это глупый вопрос, я очень плохо разбираюсь в такого рода вопросах. всякая всячина.
Подробнее здесь: https://stackoverflow.com/questions/793 ... rotating-i
Мобильная версия