250314

lililllilillll·2025년 3월 14일

개발 일지

목록 보기
110/350

✅ What I did today


  • Project BCA


📝 Things I Learned


🏷️ Light baking cheatsheet



🎮 Project BCA


인트로 연출 만들어보려다 애니메이션, 가시성 등 여러 문제 발생하여
패널에 정보 입력하면 문이 열리는 것으로 변경

Making a panel

  • UI Toolkit 존재만 확인. 자원 절감 효과 대비 학습 곡선 높을 것 같아서 패스.
  • Panel은 간단할 것 같아서 직접 만들어보기

  • Scale을 111로 만들고 Bevel하면 기울어지지 않은 경사 만들어진다 (써먹진 않음)
  • 그래프에 있는 점 만지면 Bevel 모양 변경 가능
  • 특정 영역만 부드럽게 만들려면 Auto Shade Smooth 하면 됨

  • 가로: 254.3mm/세로: 165.8mm 기준
  • Render Texture를 넣은 머테리얼이 UV에 맞게 적용되게 하기 위해 UV 세로를 165.8/254.3=0.652로 설정
    • Camera Viewport Rect도 동일하게 설정
  • Render Texture Size에 소수점 입력이 불가능해 올림하여 설정
  • 퀄리티가 낮아 Render Texutre Size 조절
  • 뒤집어져서 보이길래 Canvas Scale -1 -1

  • 글씨가 가로로 약간 찌그러져 보이고, 향후 입력을 받을 때 복잡해질 것 같고, 시각적으로 구려보임.
  • 화면 말고 물리적 버튼 있는 기계로 동작하도록? (근데 그래도 화면 있어야 될 것 같긴 한데)
  • 씬 테마도 simplicity니까 그냥 전부 폐기. 문 앞에 오면 열리게 하자.

Intro triggers

    void OnTriggerEnter(Collider other)
    {
        // Sequence doorSequence = DOTween.Sequence();
        // doorSequence.AppendInterval(waitTime);
        // doorSequence.AppendCallback(() => buzzDelayTime = metalDoor.PlayBuzzer());
        // doorSequence.AppendInterval(buzzDelayTime + 0.1f);
        // doorSequence.AppendCallback(() => { door.DOLocalMoveX(4.3f, doorOpenTime); metalDoor.PlayDoorOpen(); });
        StartCoroutine(OpenDoorCoroutine());
        // Destroy(this);
    }

    private IEnumerator OpenDoorCoroutine()
    {
        yield return new WaitForSeconds(waitTime);
        float buzzDelayTime = metalDoor.PlayBuzzer();
        yield return new WaitForSeconds(buzzDelayTime + 0.1f);
        door.DOLocalMoveX(4.3f, doorOpenTime);
        metalDoor.PlayDoorOpen();
        yield return new WaitForSeconds(doorOpenTime);
        Destroy(gameObject);
    }

DoTween은 변수 할당 후에 콜백으로 사용하는게 불가능했다
Sequence는 선언 시점에 모든 걸 결정해놓는듯
코루틴으로 짜니까 코드도 짧아졌고 해당 이슈도 발생 안 함
플래그로 중복 재생 막음

trigger를 probuilder로 만든 오브젝트의 mesh collider에 넣었는데
convex 체크 때문에 ㄷ자 반영이 안됨. 근데 convex 체크 안 하면 is trigger 안됨.
번거롭지만 box collider 3개로 대체.

Darkroom bake issue

빛이 들어오면 안되는 곳에 빛이 bake됨

  • area light에는 rendering mask가 없었음
  • 끄고 bake 해봐도 동일
  • bake data 초기화했는데도 동일
  • 바깥 방을 움직여보니 Area light의 bake 범위가 암실까지 침범해서 그랬던 거였음. 떼어놓고 bake해봐도 소용 없음.

범인은 Reflection Probe였다.

방 셰이더 Unlit으로 바꿔서 해결.

Change cursor

  • Project Settings - Player - Default Cursor
  • Cursor Iamge 크기는 2의 배수
  • 2의 배수 이미지 내에서의 공백이 인게임 커서의 크기를 결정

Light baking issue with a distant light

천장을 좀 높였더니 라이트맵이 이상해짐

  • area light가 천장 위로 가서 그랬던건지, 아래로 내려서 확실하게 안으로 들어오게 하니까 해결됨
  • 아래 쪽에 살짝 밝게 비추던 건 Reflection Probe 문제였다. 이게 라이팅에 어느 정도 관여를 하는건가? Reflection Probe 영역을 방 전체로 잡아야 일부만 밝은 현상 제거 가능. 일단 그냥 Metalic을 다 없애버림.

천장을 너무 높였더니 제곱으로 빛 세기가 작아짐.

  • 일정 높이 이후부턴 백룸마냥 거울 효과로 무한 높이감 줄까 생각도 했는데, 백룸 게임도 아니고 체스 게임인데 시간 오래 걸릴 일을 굳이? 그냥 적당히 높이 맞췄다.
  • Max Bounces 높여서 위와 아래 밝기 차이 해결

Footstep sound per unit of time

            if (Time.time - lastWalkTime > 0.8f)
            {
                lastWalkTime = Time.time;
                lastclip = lastclip == 0 ? 1 : 0;
                audioSource.clip = audioClips[lastclip];
                audioSource.Play();
            }

https://ncnb.tistory.com/9

Screen Tearing

빌드 뽑아봤더니 화면이 좌우로 찢김

https://discussions.unity.com/t/is-the-only-way-to-fix-screen-tearing-to-enable-v-sync/908975

profile
너 정말 **핵심**을 찔렀어

0개의 댓글