Para caso alguém resolva utilizar Unity.
Esse repositório é um projeto exemplo. Você pode clonar para ver a cena Exemplo, ou clicar no botão "code" para baixar o projeto zipado e poder abrir usando a Unity no seu PC.
A ideia dessa mecânica inspirada no jogo Darkwood é permitir que elementos estejam escondidos na cena e apenas quando estiverem no campo de visão do player ficarão visíveis. Permite criar uma atmosfera sombria e recheada de suspense.
Abaixo você pode perceber um exemplo demonstrando como pode funcionar.
Exemplo.de.cena.mp4
Na pasta "Assets/_Project/Materials" você vai encontrar o material "HideInShadow". Ele é feito para que a sprite fique completamente apagada na cena caso nenhuma iluminação a afete. Daí é só utilizar esse material em qualquer SpriteRenderer que você queira causar efeito.
Note que para que funcione o SpriteRenderer em questão deve estar configurado para uma Sorting Layer que não seja afetada por nenhuma outra luz que a do campo de visão (FOV - Field of view) do player. Dá uma olhada nos exemplos abaixo (retirados da cena exemplo nesse projeto).
Note que apenas luzes que definem o campo de visão do player deverão estar com a Sorting Layer definida pro FOV marcada. Todas as outras luzes devem desmarcar essa Sorting Layer.
Se não quiser baixar o projeto para fazer sua própria extração, tá aqui o link para download do pacote da Unity: Hide In Shadow Package .
OBS: O arquivo "CombinedShapeLightSharedHidden.hlsl" deve estar na mesma página que o arquivo "HideInShadow.shader" senão o shader não vai funcionar.
- Unity com com URP (Universal Render Pipeline) instalado
- Testado na Unity 2021.3.11f1 (LTS)
- Testado com URP versão 12.1.7
- O player na cena exemplo utiliza o ("novo") Input System "1.4.3".
-
Apesar de não conseguir fazer rodar na Unity 2021.3.* , aprendi muito com esse vídeo e código fonte disponibilizado nele.
-
Foi com nessa pergunta do StackOverflow que eu descobri como fazer o shader.
Espero ter ajudado! Qualquer dúvida, pode entrar em contato comigo no servidor do discord da ctrl + alt!