像你在单人纸牌游戏中看到的“弹跳牌”的优秀算法是什么?
你见过最酷的卡片动画是什么?
编辑 - 除了Windows游戏之外还有什么?
答案 0 :(得分:5)
x轴速度是恒定的。每帧的y速度增加一些值。每个帧,当前的x和y位置增加各自的速度。如果卡片最终落在窗口下方,则y-velocity乘以-0.9之类的值。 (负数> -1)这会产生一系列下降反弹。
答案 1 :(得分:2)
两部分:
通过每秒更新和重新绘制卡片的次数来设置动画,每次更改卡片的位置。简单的方法是计算类似(伪Python)的东西:
vel_x = # some value, units/sec
vel_y = # some value, units/sec
acc_x = # some value in units/sec^2
acc_y = # some value in units/sec^2
while not_stopped():
x = x+vel_x
y = y+vel_y
# redraw the card here at new position
if card_collided():
# do the bounce calculation
vel_x = x + (0.5 * acc_x) # 1st derivative, gives units/sec
vel_y = y + (0.5 * acc_y)
只要卡片与两侧保持四方形,当卡片中心与墙壁之间的距离为宽度或高度的1/2时,就会与侧面发生碰撞。
答案 2 :(得分:1)
在查理提供的代码挣扎了一个小时之后,我想出了正确的算法(彻底阅读了递归的反应之后)。在真正的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
使用wxPython提供以下内容:http://i.imgur.com/t51SXVC.png:)