在corona中更改运动对象的行进方向

我对 Corona 还很陌生,需要一些帮助来操控移动对象:

我希望创建这样一个设置:当我点击一个移动中的对象时,会弹出一个对话框,让我可以选择改变这个对象的速度和运动的向量。我相信我可以弄清楚事件处理和对话框,但是我卡在了如何简单地改变运动方向到新向量上。

在简单的例子中,我已经创建了一个矩形向屏幕上方移动:

obj1 = display.newRect(500, 800, 10, 40)
transition.to(obj1,{x=500, y = 100, time = 40000})

我知道我可以通过调整时间来改变速度,但如果我使用

obj1:rotate(30)

来将对象旋转 30 度,我该如何让它朝着新的方向移动?

我应该使用物理引擎 - 例如线性推力,而不是转换吗?

如果这是一个愚蠢的问题,请原谅,但我已经寻找没有成功找到解决方案。

点赞
用户1879694
用户1879694

这听起来就是你想要做的事情。你需要修改一些细节以适应你的代码,但这是一个可工作的示例。因此,如果你将其复制到一个新的 main.lua 文件中并运行它,你就可以看到它是如何工作的。(点击旋转对象)

local obj = display.newRect(50,50, 10, 40)
local SPEED = 1
local function move(event)

    obj.x = obj.x + math.cos(math.rad(obj.rotation)) * SPEED
    obj.y = obj.y + math.sin(math.rad(obj.rotation)) * SPEED

end

local function rotate(event)
    obj.rotation = obj.rotation + 45
end

Runtime:addEventListener("enterFrame", move)
Runtime:addEventListener("tap", rotate)

基本上,我使用了“enterFrame”事件来“移动”矩形,通过在每一帧重新计算对象的位置,利用其旋转角度(这很容易修改)的 x 和 y 坐标。

2013-03-05 16:26:19