Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight中制作物理动画的最佳方法?_Silverlight_Animation - Fatal编程技术网

在Silverlight中制作物理动画的最佳方法?

在Silverlight中制作物理动画的最佳方法?,silverlight,animation,Silverlight,Animation,我是Silverlight的新手,我想制作一个从大炮中射出的球的动画,然后根据物理定律在空中移动(如此粗略地说,在椭圆路径上) 我倾向于使用回调计时器,通过更改小球的Canvas.LeftProperty和Canvas.TopProperty值,每50毫秒移动一次小球。这是正确的方法还是应该使用双重动画?我在这里使用动画的阻力是,我必须连续创建许多不同的动画 Silverlight大师会选择哪条道路?我认为您不必连续创建多个动画。球只改变方向一次 Y值先下降(使球看起来像是在上升),然后上升(使

我是Silverlight的新手,我想制作一个从大炮中射出的球的动画,然后根据物理定律在空中移动(如此粗略地说,在椭圆路径上)

我倾向于使用回调计时器,通过更改小球的Canvas.LeftProperty和Canvas.TopProperty值,每50毫秒移动一次小球。这是正确的方法还是应该使用双重动画?我在这里使用动画的阻力是,我必须连续创建许多不同的动画


Silverlight大师会选择哪条道路?

我认为您不必连续创建多个动画。球只改变方向一次

Y值先下降(使球看起来像是在上升),然后上升(使球看起来像是在下降)。下降时的减速度应该是恒定的(代表9.8 m/s/s),Y值上升时的加速度(炮弹下降)是恒定的,直到它击中代表地面的点为止

X值应保持恒定,否则应考虑空气阻力,稍微减速

因此,您将得出以下结论:

  • 它从哪里开始(大炮, (显然)
  • 球打在哪里?它是垂直的顶点
  • 球在哪里落地
因此,现在可以将Y值作为起始值、结束值和一个航路点设置动画

你可以用一个开始和一个结束来设置X值的动画


当然,这将涉及非平凡的数学来确定输入加速比、减速比、速比、持续时间、起始和结束参数的确切数字。但是不管你用什么方法,你都必须解决这个问题。

可能有点过火了你知道libraray吗?

看一看我不久前问的一个问题,公认的答案给出了在silverlight链接到的游戏中制作动画的五种不同方法的比较。本文的结论是,您选择的方法将取决于许多因素

为了回答您的问题,我个人会使用在每次屏幕重新绘制和设置属性时触发的,然后移动X和Y


我还发现了一个非常好的资源。

这就是我要做的-看起来最简单。路径是抛物线,而不是椭圆