
숙련 주차 팀 프로젝트 발표회... 그리고 심화 주차 강의 듣기 (1-1 ~ 1-2)
다사다난했던 이번 팀 프로젝트. 완성을 했다는 것에 의의를 두고 싶다. 새벽, 주말까지 나와서 일을 한 팀원들에게 수고의 박수를 보낸다. 이런 날은 그냥 수다나 떨고 쉬고 싶지만... 바로 강의가 올라오고 또 저녁시간 이후엔 실시간 강의가 있다. 에잇!
그래도 내일 투표날이라 쉬니까 좋은 것 같다. 오늘은 그래서 마무리 하는 날이라 딱히 크게 쓸 건 없지만 미리 다음 주차 강의가 올라와서 조금만 들어볼까 한다.
카메라가 플레이어를 따라다니게 하고는 싶지만 특정 영역 이상은 따라오지 않게 하고 싶을 때 사용할 수 있는 방법이다. 빈 오브젝트에 Pollygon Collider 2D를 추가하면 화면에 오각형의 콜라이더가 나온다. 이걸 펼쳐서 원하는 모양을 잡으면 된다. 처음에 오각형처럼 보인다고해서 진짜 점이 다섯개만 있는건 아니니 마음대로 늘려보자.

그리고 빈 오브젝트에 CinemachineVirtualCamera를 추가하고 Follow에 플레이어를 넣고 Cinemachine Confiner 2D를 추가해 Bounding Shape 2D에 방금 만들었던 콜라이더를 넣어주자. 그러면 노란 선으로 카메라가 이동할 수 있는 영역이 표시된다.

Noise 옵션을 Basic Multi channel Perlin으로 바꾸고 6D Shake로 해준다. 6D Shake는 모든 방향에서 흔들림 발생하는 걸 말한다.

그리고 스크립트 달아주기
public class CameraShake : MonoBehaviour
{
private CinemachineVirtualCamera virtualCamera;
private CinemachineBasicMultiChannelPerlin perlin;
private float shakeTimeRemaining;
private void Awake()
{
virtualCamera = GetComponent<CinemachineVirtualCamera>();
perlin = virtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
}
public void ShakeCamera(float duration, float amplitude, float frequency)
{//어느 주기와 어느 크기, 얼마나 자주 흔들릴 것인지
if (shakeTimeRemaining > duration)//기존에 설정된 흔들기 지속 시간이 더 길다면 새로운 요청 무시
{
return;
}
shakeTimeRemaining = duration;
perlin.m_AmplitudeGain = amplitude;
perlin.m_FrequencyGain = frequency;
}
void Update()
{
//흔들기 지속 시간이 남아있다면 시간을 감소시킴
if(shakeTimeRemaining > 0)
{
shakeTimeRemaining -= Time.deltaTime;
if(shakeTimeRemaining <=0f)
{
//지속 시간이 끝나면 흔들기 멈춤
Stopshake();
}
}
}
public void Stopshake()
{
shakeTimeRemaining = 0;
perlin.m_FrequencyGain = 0;
perlin.m_AmplitudeGain = 0;
}
}
게임매니저 스크립트에서 ShakeCamera불러주면 게임 시작할 때 잠깐 카메라가 흔들리는 걸 볼 수 있다. 그나저나 CinemachineBasicMultiChannelPerlin이라니... 이름 너무 긴거 아닌가??ㅋㅋㅋㅋ
개인적인 기준으로 만족스럽진 않았지만 우리 팀에서 나올 수 있는 최대의 결과물이 나온 것 같아 이 점은 만족스럽다. 노력한건 맞으니까 말이다. 그런데 난 언제쯤 포인트를 얻을 수 있을까.. 가능성 있었을 때 못받으니 더 이상 기회가 없는 것 같은 느낌이 들지만 너무 연연하지 않는것이 좋겠다. 그나저나 내 개발실력은 늘고있는게 맞는가?
내일은 캠프가 없는 날이지만 집에서 강의를 조금 들을까 한다. 미리 들어두면 좋으면 좋지 나쁠게 하나도 없으니 말이다.