参考我目前正在构建的这个编程游戏。
我编写了以下方法来将画布移动(平移)到特定距离并根据其当前角度:
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