如何将位置设置为变量(Corona SDK)

How To Set Position as a Variable (Corona SDK)

所以我在 Corona 中制作了一个像乒乓球这样的游戏,我被困在如何让球拍追踪球的过程中。我已经将球的 x 坐标定义为 ball.x = ballxballx = 160 但是当我使用

local myListener = function( event )
   upperpad.x = ballx
   lowerpad.x = ballx
end

Runtime:addEventListener( "enterFrame", myListener )

为了保持桨的 x 值更新为球的 x 值,它保持不变。我怎样才能将 ballx 表示为一个变化的值并让球拍反映球的 x 值?

ballx 值保持不变,因为您可能没有更新它,而是直接更改 ball.x。事实上,这就是这样做的方法:你应该使用 ball.x 因为这是被改变的真实值,而不是 ballx。

但是,如果你仍然想使用参考值ball.x,你可以设置ballx = ball.x然后更新 ballx直接取值。

当您完成更新 ballx 值后,您也可以更新 ball.x 值,就像您所做的那样更新球拍。

local updateBall = function()

    ballx = ballx + 20 --update the ballx value

end

Runtime:addEventListener("enterFrame", updateBall)

local myListener = function(event)

   ball.x = ballx --then update the ball itself with the ballx value

   upperpad.x = ballx --and make the paddles follow
   lowerpad.x = ballx

end

Runtime:addEventListener("enterFrame", myListener)

编辑:如果您想根据球的位置(由物理引擎处理)手动设置桨的位置,只需让它们遵循原始 ball.x 值即可。你不需要球球。

local movePaddles = function(event)

   upperpad.x = ball.x
   lowerpad.x = ball.x

end

Runtime:addEventListener("enterFrame", movePaddles)