タッチ入力に基づいて観覧車のように多数のボックスを回転させようとしています
画面上に観覧車があり、カートの 1 つを下にドラッグすると観覧車が一方向に回転し、上にドラッグすると車輪が逆方向に回転することを想像してください。
観覧車の各ボックスまたは「カート」は回転しません。観覧車とまったく同じように、円運動でのみ移動します
これでほとんど機能していますが、ボックスが最初のグラブポイントから離れているため、ボックスの1つに触れるとすぐに別の場所に表示されますが、通常どおり回転します。最初のグラブポイントからスムーズに回転し続けたい
ここに私の現在のコードがあります
local squares = display.newGroup()
local square = display.newRect(0,0,200,200)
square.x, square.y = 320, 320
square:setFillColor(100,255,55)
squares:insert(square)
local square2 = display.newRect(0,0,200,200)
square2.x, square2.y = 320, 320
square2:setFillColor(999,255,55)
squares:insert(square2)
local function onTouch( event )
local t = event.target
local phase = event.phase
if "began" == phase then
local parent = t.parent
parent:insert( t )
display.getCurrentStage():setFocus( t )
t.isFocus = true
-- Store initial position
t.x0 = event.x - t.x
t.y0 = event.y - t.y
elseif t.isFocus then
if "moved" == phase then
local degrees = event.y
local rads = degrees * (math.pi / 360.0)
square.x = 300 * math.cos(rads) + 500
square.y = 300 * math.sin(rads)+ 500
degrees = degrees + 100
print (square.x, square.y)
local rads2 = degrees * (math.pi / 360.0)
square2.x = 300 * math.cos(rads2)+ 500
square2.y = 300 * math.sin(rads2)+ 500
degrees = degrees - 100
print (square.x, square.y)
elseif "ended" == phase or "cancelled" == phase then
display.getCurrentStage():setFocus( nil )
t.isFocus = false
end
end
return true
end
squares:addEventListener( "touch", onTouch )
私が犯したばかげた間違いを自由に指摘してください。また、ポイントではなく別のオブジェクトの周りで同じ効果を得る方法を教えていただければ、本当に感謝しています。