【问题标题】:How can I create wiggle animation (damped oscillations)?如何创建摆动动画(阻尼振荡)?
【发布时间】:2011-09-12 20:37:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: sdk physics coronasdk


    【解决方案1】:

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

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

    我会用它来描述关节的角度。根据手臂的角度和长度,您可以计算 (x,y) 对。如果您在一个系列中有多个部分,您可以简单地添加不同步骤的 x 和 y 值。

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

    【讨论】:

      【解决方案2】:

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

      • 阻尼力(0=无阻尼,1=完全阻尼)
      • 弹簧常数(0 = 无弹簧,值越大,弹簧越强)

      每一帧,你都想跟踪物体的速度,并且:

      1. 阻尼(减慢)对象的速度
      2. 通过添加将其拉回静止状态的力来修改速度
      3. 根据对象的速度调整对象的位置

      在伪代码中,这是:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 1970-01-01
        • 2020-05-21
        • 1970-01-01
        • 1970-01-01
        • 2022-08-14
        • 2021-08-02
        相关资源
        最近更新 更多