我有以下代码:
deg = 0.0;
local function onTouch(event)
if(event.yStart >= event.y) then
deg = deg + 10;
elseif(event.yStart <= event.y) then
deg = deg -10;
end
rads = deg * (math.pi /180.0);
x = 100.0 * math.cos(rads);
y = 100.0 * math.sin(rads);
rect.x = magnet.x + x;
rect.y = magnet.y + y;
end
它在某种程度上有效,但它并不完美。我想要做的是当用户拖动对象时将顺时针旋转。当用户向下拖动时,物体逆时针旋转(通过旋转我的意思是绕另一个物体运行)。
我遇到的问题是当用户向上或向下拖动时,deg会持续递增。所以当改变方向时,它必须一直向下增加到0以有效地改变方向。我无法弄清楚如何在不拧紧物体位置的情况下有效地重置变量deg。
提前感谢。
修改
在查看代码后,我意识到问题是不我上面所说的。问题是,当我改变方向时,event.yStart不会重置!
所以会发生什么,假设我开始200px,当我向上拖动意志增加只要我保持在200px以上(无论我向上或向下拖动。并且不会开始递减直到我低于200px。
答案 0 :(得分:0)
你可以试试这个:
deg = 0.0;
local prevPosY = 0
local function onTouch(event)
if event.phase == "began" then
prevPosY = event.y
end
if(event.y >= prevPosY) then
deg = deg + 10;
elseif(event.y <= prevPosY) then
deg = deg -10;
end
prevPosY = event.y
rads = deg * (math.pi /180.0);
x = 100.0 * math.cos(rads);
y = 100.0 * math.sin(rads);
rect.x = magnet.x + x;
rect.y = magnet.y + y;
end
答案 1 :(得分:0)
deg = 0.0;
prevY = 0;
local function onTouch(event)
if event.phase == "began" then
prevY = event.y
end
if(event.y >= prevY) then
deg = deg + 10;
elseif(event.y <= prevY) then
deg = deg -10;
end
prevY = event.y
rads = deg * (math.pi /180.0);
x = 100.0 * math.cos(rads);
y = 100.0 * math.sin(rads);
rect.x = magnet.x + x;
rect.y = magnet.y + y;
end