Возникли проблемы с получением правильной позиции для рисования моего спрайта при его вращении.C#

Место общения программистов C#
Ответить
Anonymous
 Возникли проблемы с получением правильной позиции для рисования моего спрайта при его вращении.

Сообщение Anonymous »

У меня возникли проблемы с отрисовкой анимации в правильном положении. Я рисую свою анимацию из атласа и компенсирую положение анимации на количество пикселей, которые были обрезаны при упаковке спрайта в упаковщик текстур. Проблема в том, что когда я поворачиваю спрайт, это смещение перестает быть правильным, анимация становится очень нервной. Поэтому мне нужно учитывать вращение спрайтов при смещении положения анимации, но я не знаю, как это сделать.

Код: Выделить всё

        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);
}

oX и oY — смещение спрайтов по оси X и Y
https://gyazo.com/47a394708ec0fb76fece1f0d0ad6afbd
Я пытался установить начало координат в центре каждого кадра, но в итоге эффект при вращении спрайта стал хуже.
Я пробовал умножить положение на отрицательный косинус и синус вращения, но, похоже, это практически не имеет никакого эффекта, хотя если я умножу положение только на отрицательный косинус вращения, анимация вернется в нормальное состояние, если перевернуть его вверх ногами.Если бы кто-нибудь мог сказать мне, как я могу объяснить вращение при смещении положения спрайтов, я был бы очень признателен 🙏
Извиняюсь, если это глупый вопрос, я очень плохо разбираюсь в такого рода вопросах. всякая всячина.

Подробнее здесь: https://stackoverflow.com/questions/793 ... rotating-i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»