0

ソリティア ゲームで見られるような「バウンス カード」に適したアルゴリズムは何ですか?

あなたが見た中で最もクールなカードアニメーションは何ですか?

編集- Windows ゲーム以外に何かありますか?

4

3 に答える 3

5

x軸の速度は一定です。y速度は、フレームごとにある値ずつ増加します。フレームごとに、現在のx位置とy位置がそれぞれの速度で増分されます。カードがウィンドウの下に来る場合、y速度は-0.9のようなもので乗算されます。(負の数> -1)これにより、一連の下降バウンスが生成されます。

于 2008-12-30T22:01:50.677 に答える
2

2 つの部分:

  1. 垂直方向の動きは、 d=1/2at²のような 2 次方程式によって管理されます。もちろん、地球の場合、a= 32 ft/sec² ですが、定数をいじる必要があります。
  2. カードがエッジに当たると、「再帰的」と言うように、速度ベクトルは表面に垂直なコンポーネントの -1 倍になります。うまく跳ね返って止まるようにしたい場合は、-1 を -0.9 のように少し小さい値にします。

カードの更新と再描画を 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 になると、側面と衝突します。

于 2008-12-30T23:26:20.910 に答える
1

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 :)

于 2013-11-22T20:10:16.283 に答える