내일배움캠프 Unity 49일차 TIL - 팀 오오오오오 - 개발일지

Wooooo·2024년 1월 5일
0

내일배움캠프Unity

목록 보기
51/94

[오늘의 키워드]

카메라에 총기 반동을 적용해야하는데,, 어떻게 적용해야할 지 많이 고민했다.
그 이외에는, 팀원분이 작업해주신 Weapon 클래스와 내가 작업한 PlayerController 클래스를 연결했다.
또, ADS 전환 시 카메라 전환 연출도 추가했다.


[총기 반동 설계]

  1. 총기 데이터에서 수평, 수직 반동 수치를 받아온다.
  2. 반동 수치를 RigidBody.velocity에 set 했을 때 처럼 작동하게 해보려고 한다.
    reference: 최대한 배틀그라운드처럼 보이게.
  3. 수치를 받고 나면, 처음에는 카메라에 반동값이 빠르게 적용되고 시간이 지남에 따라 속도가 서서히 줄어든다.
    이 과정에서는 Lerp나, AnimationCurve를 이용해서 수치가 줄어들게 해볼 생각이다.
    아무래도 총기반동이다보니, 처음엔 급격하고 나중엔 완만한 값을 사용하기 위해서 AnimationCurve를 사용하는게 더 자연스러운 연출이 나올 것 같다.
  4. 이전 반동이 모두 적용되기 전에 다음 총알이 발사 될 수도 있다. 이때의 처리도 생각해야한다.
    아무래도 이전에 남아있던 반동 데이터는 지우고, 새롭게 계산하는 것이 좋을 것 같다.
    Coroutine을 이용해서, 이전 반동을 계산하던 코루틴은 Stop하고 새로운 Coroutine을 호출하는 방식으로 하면 해결될 것 같다.
  5. 반동 계산값을 적용하는 시점은 CinemachineExtensionPostPipelineStageCallback() 메서드에서 마우스 인풋값에 대한 카메라 회전 연산과 동시에 진행하면 될 것 같다.

[Unity Editor에서 Shader Compile]

여러가지 에셋을 추가하는 과정에서 머티리얼과 셰이더가 추가됐는데, 테스트 중 런타임에서 셰이더를 컴파일링하고, 그동안은 메쉬 렌더링이 단색으로 깨지는 현상이 있었다.

공식문서를 찾아보니, 일단은 에디터 상에서만 발생하는 문제같다. 모든 셰이더를 다 컴파일하는 건 시간이 너무 오래 걸릴 수도 있으니, 필요한 셰이더만 컴파일하고, 만약 캐싱되지 않은 셰이더를 런타임에서 인스턴싱한다면 그때 그때 비동기로 컴파일 하는 방식이라는 듯하다.

한 번 컴파일을 하고나니깐 에디터 자체에 캐시파일이 남아서 계속 발생하진 않는 것 같기도..?

빌드 파일로 뽑아낼 때는 빌드 과정에서 모든 셰이더를 컴파일한다고 하니, 일단은 문제 없을 것 같다..

유니티 공식 문서 : Shader Complie

profile
game developer

0개의 댓글