내일배움캠프 39일차

박나연·2025년 6월 2일

내배캠

목록 보기
39/69
post-thumbnail

숙련 주차 팀 프로젝트 발표회... 그리고 심화 주차 강의 듣기 (1-1 ~ 1-2)

오늘의 키워드 : 발표회, 심화 주차 시작

다사다난했던 이번 팀 프로젝트. 완성을 했다는 것에 의의를 두고 싶다. 새벽, 주말까지 나와서 일을 한 팀원들에게 수고의 박수를 보낸다. 이런 날은 그냥 수다나 떨고 쉬고 싶지만... 바로 강의가 올라오고 또 저녁시간 이후엔 실시간 강의가 있다. 에잇!
그래도 내일 투표날이라 쉬니까 좋은 것 같다. 오늘은 그래서 마무리 하는 날이라 딱히 크게 쓸 건 없지만 미리 다음 주차 강의가 올라와서 조금만 들어볼까 한다.

Polygon Collider 2D

카메라가 플레이어를 따라다니게 하고는 싶지만 특정 영역 이상은 따라오지 않게 하고 싶을 때 사용할 수 있는 방법이다. 빈 오브젝트에 Pollygon Collider 2D를 추가하면 화면에 오각형의 콜라이더가 나온다. 이걸 펼쳐서 원하는 모양을 잡으면 된다. 처음에 오각형처럼 보인다고해서 진짜 점이 다섯개만 있는건 아니니 마음대로 늘려보자.

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

CameraShake

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이라니... 이름 너무 긴거 아닌가??ㅋㅋㅋㅋ

마무리하며

개인적인 기준으로 만족스럽진 않았지만 우리 팀에서 나올 수 있는 최대의 결과물이 나온 것 같아 이 점은 만족스럽다. 노력한건 맞으니까 말이다. 그런데 난 언제쯤 포인트를 얻을 수 있을까.. 가능성 있었을 때 못받으니 더 이상 기회가 없는 것 같은 느낌이 들지만 너무 연연하지 않는것이 좋겠다. 그나저나 내 개발실력은 늘고있는게 맞는가?

내일 할 일

내일은 캠프가 없는 날이지만 집에서 강의를 조금 들을까 한다. 미리 들어두면 좋으면 좋지 나쁠게 하나도 없으니 말이다.

0개의 댓글