我有以下代码:
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,才能有效地改变方向。我想不出如何在不扭曲物体位置的情况下对变量进行情感复位。
提前感谢。
编辑
在查看了代码之后,我意识到问题是,而不是,正如我前面所说的。问题是,当我改变方向时,event.yStart不会重置!
那么,假设我启动了200 or,当我拖起意志增量时,只要我保持在200 or以上(无论是向上还是向下),会发生什么。直到我降到200便士以下,才会开始减少。
发布于 2013-05-04 06:33:59
你可以试试这个:
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发布于 2013-05-04 12:16:46
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;
endhttps://stackoverflow.com/questions/16369256
复制相似问题