如何创建摆动动画(阻尼振荡)?

时间:2011-09-12 20:37:03

标签: sdk physics corona

我是使用Corona SDK编程和制作ipad应用的新手。

我想采取像这样的摆动动画: http://www.youtube.com/watch?v=kXxQU0T7I2A#t=0m40s(t = 40-44sec)。

我该怎么做?什么方法更容易:使用具有特定关节的物理或使用过渡? 也许是一些例子?

2 个答案:

答案 0 :(得分:0)

阻尼谐振子的解决方案非常简单:

startAmplitude*sin(omega*t+startPhase)*exp(-t*dampningConstant)

我用它来描述关节的角度。从臂的角度和长度,您可以计算(x,y)对。如果系列中有多个部分,则只需添加不同步骤的x和y值即可。

这并没有正确描述耦合关节系统的物理特性,但可能足以满足您的需要。

答案 1 :(得分:0)

要模拟阻尼弹簧,您需要指定:

  • 阻尼力(0 =无阻尼,1 =全阻尼)
  • 弹簧常数(0 =无弹簧,增加值导致弹簧更强)

每个帧,您想要跟踪对象的速度,并且:

  1. 阻尼(慢)物体的速度
  2. 通过添加拉回力来修改速度
  3. 根据速度
  4. 调整对象的位置

    在伪代码中,这是:

    velocity = velocity * (1-dampingFactor) + deviationFromRest * springConstant
    position = position + velocity
    

    您可以在我的网站上以交互方式玩这个:
    http://phrogz.net/damped-spring-oscillations-in-javascript

    enter image description here