Animation 弹跳卡算法

Animation 弹跳卡算法,animation,Animation,你在纸牌游戏中看到的“弹跳牌”的好算法是什么 你见过的最酷的卡片动画是什么 编辑-除了Windows游戏之外还有其他游戏吗?x轴速度是恒定的。y速度每帧增加一个值。在每一帧中,当前的x和y位置将以各自的速度递增。如果卡最终位于窗口下方,则y速度乘以-0.9。(负数>-1)这会产生一系列下降反弹。两部分: 垂直方向的运动是 由二阶方程控制, 类似于d=1/2at²。对于地球 当然,a=32英尺/秒²但是 你得摆弄一下桌子 常数 当卡片碰到边缘时,如 “递归”说,速度 向量乘以-1乘以 垂直于曲面的

你在纸牌游戏中看到的“弹跳牌”的好算法是什么

你见过的最酷的卡片动画是什么


编辑-除了Windows游戏之外还有其他游戏吗?

x轴速度是恒定的。y速度每帧增加一个值。在每一帧中,当前的x和y位置将以各自的速度递增。如果卡最终位于窗口下方,则y速度乘以-0.9。(负数>-1)这会产生一系列下降反弹。

两部分:

  • 垂直方向的运动是 由二阶方程控制, 类似于d=1/2at²。对于地球 当然,a=32英尺/秒²但是 你得摆弄一下桌子 常数
  • 当卡片碰到边缘时,如 “递归”说,速度 向量乘以-1乘以 垂直于曲面的零部件。如果 你想让它很好地反弹到 停下来,把-1稍微调一下 较小的值,如-0.9
  • 通过每秒更新和重画卡若干次,每次更改卡的位置来设置动画。简单的方法是计算(伪Python):


    只要卡片与侧面保持四方形,那么当卡片中心与墙壁之间的距离为宽度或高度的1/2时,就会与侧面发生碰撞。

    在与Charlie提供的代码斗争了一个小时左右后,我想出了正确的算法(彻底阅读了recursive的响应). 在真正的Python中:

    def bouncing_cards():
        x = 0.0
        y = 0.0
        vel_x = 3.0
        vel_y = 4.0
    
        while x < windowWidth:
            drawImage(img, x, y)
            x += vel_x
            y += vel_y
            vel_y += 1.0
            if y + cardHeight >= windowHeight:
                y = windowHeight - cardHeight
                vel_y *= -0.9
    
    def弹跳卡():
    x=0.0
    y=0.0
    水平x=3.0
    水平y=4.0
    当x=窗高:
    y=窗高-卡高
    水平y*=-0.9
    

    使用wxPython给出以下内容::)

    但存在一些“重力”,否则不会减慢速度IIRC,纸牌动画会在纸牌路径上的所有位置显示纸牌,因此您必须修改此算法以记住它所处的所有位置,并适当地绘制它们。或者只是不清除帧之间的帧缓冲区(我怀疑这是原始纸牌所做的)重力:y速度每帧增加一个值。重力是每帧增加的y速度。使它变慢的部分是-0.9乘数,它在每次卡反弹时引入10%的垂直速度损失。
    def bouncing_cards():
        x = 0.0
        y = 0.0
        vel_x = 3.0
        vel_y = 4.0
    
        while x < windowWidth:
            drawImage(img, x, y)
            x += vel_x
            y += vel_y
            vel_y += 1.0
            if y + cardHeight >= windowHeight:
                y = windowHeight - cardHeight
                vel_y *= -0.9