关于我正在构建的编程游戏,我希望您能协助翻译以下内容。
我正在使用WPF来动画化画布,并且我正在使用BeginAnimation
方法在另一个画布上移动画布。
使用BeginAnimation,我需要指定x和y的From
和To
坐标,我是这样使用的:
//X
Animator_Body_X.From = Translate_Body.X; //Current x-coordinate
Animator_Body_X.To = //The end X-coordinate
Translate_Body.BeginAnimation(TranslateTransform.XProperty, Animator_Body_X);
//Y
Animator_Body_Y.From = Translate_Body.Y; //Current y-coordinate
Animator_Body_Y.To = //The end Y-coordinate
Translate_Body.BeginAnimation(TranslateTransform.YProperty, Animator_Body_Y);
现在需要使用给定的角度来翻译画布,我可以从方法中获取该角度。因此我的问题是,给定画布当前旋转的角度(0-359),起始x和y坐标(画布当前所在位置)以及距离(以像素为单位),如何计算结束坐标?也就是画布最终要被翻译到哪里。在上面的图像中,我画了一个示例,展示了我想要实现的内容。假设画布(实线边框框)当前的头部(角度)为130度,并且需要沿着该角度向下移动(即取决于它当前朝向的位置)200像素...画布的新坐标将是什么(它将停止动画:虚线边框框)?我如何计算它将停止的这些新坐标? [更新]解决方案:
感谢Andy和Cameron的帮助,现在它终于按照预期工作了。
以下是可用的代码:
double headingRadians = Heading * (Math.PI / 180);
Animator_Body_X.From = Translate_Body.X;
Animator_Body_X.To = Math.Sin(headingRadians) * pix + Translate_Body.X;
Translate_Body.BeginAnimation(TranslateTransform.XProperty, Animator_Body_X);
Animator_Body_Y.From = Translate_Body.Y;
Animator_Body_Y.To = ((Math.Cos(headingRadians) * pix) * -1) + Translate_Body.Y;
Translate_Body.BeginAnimation(TranslateTransform.YProperty, Animator_Body_Y);