1

我正在做一个简单的突破游戏,我有点卡在“胶水”效应上——球碰到桨,然后粘在它落在桨上的位置。我的问题是ball.x根据 paddle.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

然后,如果你被粘住了,你只需在桨位置改变后再次使用 delta:

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