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

所以我正在用Corona制作一个类似乒乓球的游戏,我卡在如何使挡板跟踪球上。我已将球的x坐标定义为ball.x = ballxballx = 160,但当我使用以下代码来保持挡板的x值更新为球的x值时,它始终保持不变:

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

Runtime:addEventListener( "enterFrame", myListener )

如何将ballx表示为一个可变的值并使挡板镜像球的x值?

点赞
用户4298733
用户4298733

球的值保持不变,因为你可能没有更新它,而是直接更改了ball.x。实际上,这是正确的做法:你应该使用ball.x,因为这是实际被更改的值,而不是ballx。

然而,如果你仍然想要使用ball.x的引用值,你可以设置 ballx = ball.x,然后直接更新ballx的值。

当你更新了ballx的值后,你也可以像之前一样更新ball.x的值和挡板。

local updateBall = function()

    ballx = ballx + 20 --更新ballx的值

end

Runtime:addEventListener("enterFrame", updateBall)

local myListener = function(event)

   ball.x = ballx --然后用ballx的值更新球本身

   upperpad.x = ballx --使挡板跟随
   lowerpad.x = ballx

end

Runtime:addEventListener("enterFrame", myListener)

编辑:如果你想根据球的位置手动设置挡板的位置(这由物理引擎处理),只需让它们跟随原始的ball.x值。你不需要ballx。

local movePaddles = function(event)

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

end

Runtime:addEventListener("enterFrame", movePaddles)
2015-12-22 09:07:19