Задать вопрос
Di21H
@Di21H
Обычный человек

Как сделать мерцающиЕ звездЫ?

Кто нибудь помогите с кодом. То есть напишите мне алгоритм пожалуйста. Чтобы звезды мерцали. Я делаю так:
Создаю белые круги(50 штук) и их рандомно кидаю по экрану. Но как мне заставить их всех мерцать не одновременно все, а чтобы рандомно каждая отдельно? Мне бы алгоритм.
П.С. Для мерцания есть функция "fx.alpha"
  • Вопрос задан
  • 364 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@alex_ak1
Для каждой звезды храни счетчик.
Каждый кадр счетчик уменьшается.
Если он меньше 5 звезда увеличивается на 5. Если меньше 10, на 10, если меньше 15 - опять на 5.
Если меньше 0 - счетчик становится равен случаному числу (100) + 100.
Итого каждая звезда будет 15 кадров увеличиваться и это будет повторятся для каждой через 100-200 кадров.
Ответ написан
Комментировать
@alexalexes
Наиболее реалистичный вариант - сделать большой сборный спрайт звездного неба в фотошопе и по кадру выводить анимацию.
https://docs.coronalabs.com/guide/media/spriteAnim...
Если аналитически выводить звезды, то мало просто раскидать их по сцене рандомно, нужно хранить позицию, и степень свечения каждой звезды в списке или массиве и перерисовывать кадр после изменения любого параметра.
Ответ написан
@Qugurun
local star = {}
for i=1,50 do
	star[i] = display.newCircle(math.random(0,display.contentWidth),math.random(0,display.contentHeight), math.random(1,3))
	star[i].anchorX =0.5
	star[i].anchorY =0.5
	star[i].time = math.random(3,20)
	star[i].animateUp = function ()
		star[i].x = math.random(0,display.contentWidth)	
		star[i].y = math.random(0,display.contentHeight)
		transition.to( star[i], { time= star[i].time * 100, alpha = 1, xScale = 1, yScale = 1, onComplete=star[i].animateDown } )
	end
	star[i].animateDown = function ()
		transition.to( star[i], { time= star[i].time * 500, alpha = 0, xScale = 0.01, yScale = 0.01, onComplete=star[i].animateUp } )
	end
	star[i].animateDown()
end
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы