как создать эффект туманности / облачности для определенных SKSpriteNodes в SKScene

#swift #sprite-kit #skaction

#swift #sprite-kit #skaction

Вопрос:

Я хотел бы создать эффект туманности / облачности, видимый на изображениях ниже (эффект туманности, похоже, работает на всем, кроме игрового персонажа впереди), таким образом, чтобы я мог определять уровень облачности с помощью действия. Я заинтересован в том, чтобы это влияло на определенные спрайты, а не на все спрайты.

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Не могли бы вы быть немного более конкретным, я не вижу никакой туманности. Вы имеете в виду тот факт, что кнопки имеют небольшие тени под ними?

2. Изучите SKEffectNodes и CIFilters

3. @Confused Я добавил другое изображение, чтобы вы могли видеть разницу

4. @Knight0fDragon Спасибо за совет. Фильтры довольно, как я могу найти именно тот, который мне нужен?

5. developer.apple.com/library/content/documentation/…

Ответ №1:

Самый простой способ добиться этого — создать SpriteNode размером с весь экран, который будет заполнен белым цветом. Поместите это поверх всех других узлов, кроме узлов, которые вы не хотите, чтобы исчезли.

Итак, если у вас есть узлы A, B, C, D, E и F, и вы хотите, чтобы все, кроме F, были размыты, а экран пользователя находится справа … вот так:

A, B, C, D, E, [белый слой], F -> просмотрщик / камера здесь.

Непрозрачность белого слоя не может быть на 100% непрозрачной, потому что в этом случае вы не увидите ничего, кроме F и белого слоя. Итак, установите белый слой примерно (в данном случае) на 33% непрозрачным, используя альфа-значение SKSpriteNode. 1 полностью непрозрачен, 0,33 — 33% непрозрачен или 67% прозрачен 😉

Еще один совет: вы можете изменить режим наложения узлов, для которого аддитивный режим наложения лучше всего подходит для этого, но обычный тоже подойдет.