我有以下代码:
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 之前不会开始减少。