ソリティア ゲームで見られるような「バウンス カード」に適したアルゴリズムは何ですか?
あなたが見た中で最もクールなカードアニメーションは何ですか?
編集- Windows ゲーム以外に何かありますか?
ソリティア ゲームで見られるような「バウンス カード」に適したアルゴリズムは何ですか?
あなたが見た中で最もクールなカードアニメーションは何ですか?
編集- Windows ゲーム以外に何かありますか?
x軸の速度は一定です。y速度は、フレームごとにある値ずつ増加します。フレームごとに、現在のx位置とy位置がそれぞれの速度で増分されます。カードがウィンドウの下に来る場合、y速度は-0.9のようなもので乗算されます。(負の数> -1)これにより、一連の下降バウンスが生成されます。
2 つの部分:
カードの更新と再描画を 1 秒間に数回行い、そのたびにカードの位置を変更してアニメーション化します。簡単な方法は、(疑似 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 になると、側面と衝突します。
Charlie が提供したコードと 1 時間ほど格闘した後、適切なアルゴリズムを思いつきました (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
wxPython を使用して以下を提供します: http://i.imgur.com/t51SXVC.png :)