1

私は単純なブレイクアウト ゲームに取り組んでいますが、「接着剤」効果に少しこだわっています。ボールがパドルに当たり、パドルに着地した位置に固執します。私の問題はball.xpaddle.x の動きに応じて計算しているため、パドルに着陸したのと同じ場所にとどまります。

ここに私のコードがあります:

function dragPaddle(event)              
        if event.phase == "began" then
            moveX = event.x - paddle.x
        elseif event.phase == "moved" then
            paddle.x = event.x - moveX

            if glueIsOn == "on" and ballOnGlue == "on" then
                ball.x = (paddle.x - ball.x)
            end
        end
4

1 に答える 1

2

ここで行う通常のことは、パドルの位置がどれだけ変化しているかを調べその量だけパドルとボールの両方を修正することです。しかし、あなたのコードはよりグローバルなアプローチを使用しているようです。

あなたの場合、おそらく最も簡単なことは、ボールが接着されている相対位置を計算することです。更新する前にこれを行いpaddle.xます:

ballDeltaX = ball.x - paddle.x
paddle.x = event.x - moveX

次に、接着されている場合は、パドルの位置が変更された後にデルタを再度使用します。

ball.x = paddle.x + ballDeltaX
于 2013-06-30T23:17:53.707 に答える