Переместить 2D-спрайт по изогнутой вверх дуге в XNA? - PullRequest
1 голос
/ 30 мая 2011

Хорошо, вот моя проблема.

Я пытался создать своего рода визуальный цикл день / ночь в XNA, где у меня есть базовый класс, который обновляет и хранит время, и класс Sky, который выводит фон на основе времени, которое обновляет класс.

Что я не могу понять, так это как заставить луну / солнце двигаться по изогнутой восходящей дуге, которая охватывает экран в зависимости от времени суток. Наиболее проблемная часть - заставить ось Y изогнуться, в то время как ось X движется с течением времени.

Кто-нибудь, кто мог бы помочь мне здесь?

EDIT: Хорошо, похоже, пример Эндрю Рассела помог мне сделать то, что мне нужно было сделать. Хотя мне пришлось немного поэкспериментировать, я наконец нашел подходящее решение: Время плавания = (плавать) Main.inGameTime.Seconds / (InGameTime.MaxGameHours * 60 * 60/2);

this.Position.X = Time * (Main.Viewport.X + Texture.Width * 2) - Texture.Width;
this.Position.Y = Main.Viewport.Y - (Main.Viewport.Y * (float)Math.Sin(Time * MathHelper.Pi) / 2) - (Main.Viewport.Y / 2) + 50;

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Попробуйте взглянуть на функции Math.Sin или Math.Cos.Это тригонометрические функции , которые вы ищете.

0 голосов
/ 30 мая 2011

Существует также класс Curve .

...