게임 시작과 게임 오버시 효과를 추가한다.
FadeIn, FadeOut, GrayScale? 등의 효과를 Darksoul 영상을 참고하여 구현한다.
Postprocessing 적용이 필요하다.
Multi Scene 을 활용한 구조를 적용해 보려고 했는데 AddtiveScene 의 Camera 가 이전 Scene 의 Camera 를 가려버리는 이슈가 발생했다.
Camera 의 Background Type 에서 Uninitialized 를 설정하고 Editor 에서 원하는 결과대로 나오기에 기본 Camera 의 don't clear 와 같은 세팅이라고 생각했는데, Unity 쪽의 설명에 의하면 다른 기능이고 Divice 의 결과물이 다를 수 있는 것은 의도된 것이라 한다.
Renderer Type 이 Base 가 되는 Camera 는 무조건 한개만 존재해야 되고 이외에는 Override 로 설정해 Base Camera 의 Stack 에 추가해 사용해야 한다.
근데 URP 를 추가하고 작업을 하다보면 이 내용 말고도 Editor 와 Divice 에서 노출되는 결과가 다른 Case 가 많아서 애를 많이 먹게 되더라.
Color Filter 을 조절해 FadeIn, FadeOut 효과를 구현 하였고, Saturation 값을 조절해 화면을 회색으로 전환하는 효과를 구현 하였다.
public class InGameMain : MonoSingleton<InGameMain>
{
[SerializeField]
private Volume _postProcess = null;
private ColorAdjustments _colorAdjustments = null;
...
private void InitPostProcess()
{
var volumeProfile = _postProcess?.profile;
if (!volumeProfile)
throw new System.NullReferenceException(nameof(VolumeProfile));
if (!volumeProfile.TryGet(out _colorAdjustments))
throw new System.NullReferenceException(nameof(ColorAdjustments));
}
...
private IEnumerator RunFade(Color from, Color to)
{
var current = from;
_colorAdjustments?.colorFilter.Override(current);
var time = 0f;
var r = 0f;
while (time < FADE_TIME)
{
r = time / FADE_TIME;
current = Color.Lerp(from, to, r);
_colorAdjustments?.colorFilter.Override(current);
yield return null;
time += Time.deltaTime;
}
current = to;
_colorAdjustments?.colorFilter.Override(current);
_corRunFade = null;
}
...
public void NewGame()
{
_colorAdjustments?.saturation.Override(COLOR_ADJUSTMENTS_NEWGAME);
...
}
public void GameOver()
{
_colorAdjustments?.saturation.Override(COLOR_ADJUSTMENTS_GAMEOVER);
...
}
}
참고로, Postprocessing 이 적용되는 카메라를 구분하고 싶으면 Volume Component 가 추가된 GameObject 의 Layer 를 설정하고 Camera 의 Volume Mask Layer 를 동일하게 변경한다.
하고싶은 것.
결과물. Saturation 값 조정이 UICamera 에는 적용되지 않아 UI 는 붉은색이 제대로 나오는 것을 볼 수 있다.
'Works > Unity 3D' 카테고리의 다른 글
Unity 프로젝트에 Local Package 추가 방법 (0) | 2021.12.23 |
---|---|
[Unity] OpenUPM 사용법 2 (0) | 2021.08.26 |
SoulLike 만들기 (2) - 자연스러운 플레이어 움직임 (Animation Blend) (0) | 2021.08.21 |
[Unity3D] Addressable 특징 메모 (0) | 2021.07.19 |
[Unity] OpenUPM - Custom Package 만들기 (0) | 2021.05.02 |
댓글