事情是这样的,我的游戏中有一个大炮,我希望能够用我的手指转动。我希望笔尖始终指向与手指拖动方向相反的方向,即如果手指被拖动到左下角,笔尖应该指向右上角。
我只是不知道如何让它工作。我已经设法使用以下代码让它旋转:
local function rotateObj(event)
local t = event.target
local phase = event.phase
if (phase == "began") then
display.getCurrentStage():setFocus( t )
t.isFocus = true
-- Store initial position of finger
t.x1 = event.x
t.y1 = event.y
elseif t.isFocus then
if (phase == "moved") then
t.x2 = event.x
t.y2 = event.y
angle1 = 180/math.pi * math.atan2(t.y1 - t.y , t.x1 - t.x)
angle2 = 180/math.pi * math.atan2(t.y2 - t.y , t.x2 - t.x)
print("angle1 = "..angle1)
rotationAmt = angle1 - angle2
--rotate it
t.rotation = t.rotation - rotationAmt
print ("t.rotation = "..t.rotation)
t.x1 = t.x2
t.y1 = t.y2
elseif (phase == "ended") then
display.getCurrentStage():setFocus( nil )
t.isFocus = false
end
end
-- Stop further propagation of touch event
return true
end
cannon:addEventListener("touch", rotateObj)
虽然这确实允许我旋转我的大炮,但它不会保持尖端与我拖动的位置相关。我什至不知道从这里去哪里。