Я только начал изучать разработку для iphone, и после того, как мой друг порекомендовал Corona SDK для простоты использования, я наконец решил попробовать его.
Теперь я только начал изучать, как использовать акселерометр и рисованиеформы и заставить их двигаться, наклоняя устройство.Поэтому я подумал, что смогу сделать инструмент уровня в качестве своего первого приложения, и у меня все работало, когда я наклоняюсь, но теперь я решил попробовать сделать плоский уровень, но я не могу понять, как заставить пузырь оставаться внутри круга.
Вот как я ограничиваю движение пузыря за пределы пузырька по горизонтали:
function bubbleBounds()
-- left side
if bubble.x < (_W/2 - vial.width/2 + bubble.width/2) then
bubble.x = (_W/2 - vial.width/2 + bubble.width/2)
end
-- right side
if bubble.x > (_W/2 + vial.width/2 - bubble.width/2) then
bubble.x = (_W/2 + vial.width/2 - bubble.width/2)
end
end
Я узнал, что вы всегда должны делать изображения со степенью 2, поэтому я сделалкруг диаметром 256 пикселей и мой пузырь 64 пикселей.Как мне написать функцию, которая ограничивает движение пузыря за пределы круга?
Спасибо, Синди
@ Mac, я знаю о размерах иконок, но используется только сила 2в играх для оптимизации памяти, верно?
@ Tim C;
Итак, если я напишу свою функцию Bounds следующим образом:
local bubbleRadius = 32
local circleRadius = 128
local sqrt = math.sqrt
local centerX = display.contentWidth/2;
local centerY = display.contentHeight/2;
local function bubbleBounds()
Length = sqrt(centerX * centerX + centerY * centerY)
normalizedX = centerX/Length;
normalizedY = centerY/Length;
limitedX = normalizedX * circleRadius;
limitedY = normalizedY * circleRadius;
if bubble.x < centerX - limitedX + bubbleRadius then
bubble.x = centerX - limitedX + bubbleRadius
end
if bubble.x > centerX + limitedX - bubbleRadius then
bubble.x = centerX + limitedX - bubbleRadius
end
if bubble.y < centerY - limitedY + bubbleRadius then
bubble.y = centerY - limitedY + bubbleRadius
end
if bubble.y > centerY + limitedY - bubbleRadius then
bubble.y = centerY + limitedY - bubbleRadius
end
end
Runtime:addEventListener("enterFrame", bubbleBounds)
Но теперь, когда я запускаю это, это прямоугольная оболочка, а не круг,акселерометр также действует очень странно и отстает.Вот как я настроил акселерометр:
local acc = {}
function acc:accelerometer(event)
bubble.x = centerX - (centerX * event.yGravity * 2);
bubble.y = centerY - (centerY * event.xGravity * 2);
end
Runtime:addEventListener("accelerometer", acc)
Где все пошло не так?