Применительно к этой программируемой игре Я сейчас строю.
Я написал следующий метод для перемещения (перевода) холста на определенное расстояние и в соответствии с его текущим углом:
private void MoveBot(double pix, MoveDirection dir)
{
if (dir == MoveDirection.Forward)
{
Animator_Body_X.To = Math.Sin(HeadingRadians) * pix;
Animator_Body_Y.To = ((Math.Cos(HeadingRadians) * pix) * -1);
}
else
{
Animator_Body_X.To = ((Math.Sin(HeadingRadians) * pix) * -1);
Animator_Body_Y.To = Math.Cos(HeadingRadians) * pix;
}
Animator_Body_X.To += Translate_Body.X;
Animator_Body_Y.To += Translate_Body.Y;
Animator_Body_X.From = Translate_Body.X;
Translate_Body.BeginAnimation(TranslateTransform.XProperty, Animator_Body_X);
Animator_Body_Y.From = Translate_Body.Y;
Translate_Body.BeginAnimation(TranslateTransform.YProperty, Animator_Body_Y);
TriggerCallback();
}
Одним из параметров, который он принимает, является количество пикселей, которое должно быть покрыто при переводе.
Что касается приведенного выше кода, Animator_Body_X
и Animator_Body_Y
относятся к типу DoubleAnimation
, которые затем применяются к объекту TranslateTransform
робота: Translate_Body
Проблема, с которой я сталкиваюсь, заключается в том, что робот (который является холстом) движется с различной скоростью в соответствии с введенным расстоянием. Таким образом, чем больше расстояние, тем быстрее движется робот! Таким образом, чтобы представить вас в перспективе, если введенное расстояние равно 20
, робот движется довольно медленно, но если введенное расстояние равно 800
, он буквально снимает экран.
Мне нужно сделать эту скорость постоянной, не зависящей от введенного расстояния.
Я думаю, что мне нужно настроить некоторые свойства Animator_Body_X
и Animator_Body_Y
в соответствии с введенным расстоянием, но я не знаю, что именно нужно настроить (я думаю, что некоторые математические функции также должны быть выполнены).
Вот список DoubleAnimation
свойств , на которые вы, возможно, захотите взглянуть, чтобы понять это.