VideoPlayer가 안보일 때

리듬 게임을 재생하면 노트 UI 뒷부분에서 비디오가 재생되도록 했는데 안보인다.

Video Player 설정을 보니 Render Mode가 Render Texture로 되어있었다.

Render Texture는 오브젝트의 텍스쳐에 붙여주어야하기 때문에 타겟 오브젝트가 존재해야한다.

 

2D게임이기 때문에 그냥 메인 카메라에서 가장 멀리 보이는 화면으로 설정했다.

 

잘 보인당ㅍvㅍ

Update()와 FixedUpdate()의 차이

  • Update : 매 프레임마다 호출되는 메서드. 게임 로직의 주요 업데이트가 이루어진다. 매 프레임 호출되는 만큼 불필요한 계산을 피하고 최적화하기 위해 사용하지 않으면 지워주는 것이 좋다.
  • FixedUpdate : 물리 엔진 업데이트 시 호출되는 메서드. 물리적인 시뮬레이션에 관련된 작업을 처리할 때 사용된다. Fixed Timestep에 설정된 값에 따라 일정한 간격으로 호출된다.

스크립트 라이프 사이클

 

Update는 불규칙한 호출임으로 물리엔진 충돌검사 등이 제대로 안될 수 있기 때문에 물리적인 시뮬레이션에 관련된 작업을 처리할 때는 FixedUpDate를 사용하는 것이 좋다.

 

리듬게임의 노트에 판정을 위한 Collider가 붙어있으므로 FixedUpDate를 사용한다.

private float noteSpeed;

private void FixedUpdate()
{
    Move();
}

private void Move()
{
    transform.position += Vector3.down * noteSpeed * Time.fixedDeltaTime;
}

 

 

노트의 정확한 판정을 위해 double을 사용하면 어떨까 해서 적용해보니 Vector3 및 double 형식의 피연산자에 적용할 수 없다고 뜬다.

float에 비해 double의 소수점 범위가 더 크기 때문에 발생하는 문제가 아닐까 예측했는데 double의 연산자 오버로딩이 없어서 그런 것이었다. 즉, 유니티에서 Vector3에 곱하는 방법을 명시하지 않은 것이다.

 

 

<Wire Frame>

게임 컨셉은 아쿠아리움으로 노래를 Perfect 등급으로 깰 때마다 새로운 물고기를 얻는 방식으로 계획했다.

 

 

<구현 계획>

  • 노트 생성
    • 여러 곡의 리듬에 맞는 노트 생성
    • 일정 게이지 이상 노트 획득 시 아쿠아리움 내에 먹이 생성
    • 오브젝트 풀링 활용
  •  아쿠아리움 구성
    • 물고기 인벤토리씬 : 물고기 장착 해제 시 맵 내에 물고기 활성화/비활성화
    • 물고기의 움직임 구현 / 애니메이션 또는 AI로 구현해 보기
    • 어항 크기 조절 < 시간이 남으면 추가로 구현
  • 리듬 게임 페이즈
    • 노트가 떨어지는 트랙 생성
    • 노트와 판정선 사이의 충돌 판정(Perfect,Great,Good,Bad,Miss)
    • 콤보 정보 기록(UI 연동)
  • UI / UX
    • 노트 히트 콤보 기록
    • 점수 기록
    • LIfe 게이지 기록
    • 물고기 먹이 게이지
  • 게임 엔딩 조건
    모든 곡을 퍼펙트로 클리어하여 전설의 물고기 모두 수집 시 게임 엔딩/ 고래 수집

나는 노트 생성 부분을 맡았으며 오브젝트 풀 방식을 완벽히 이해하고 사용하여 코드적인 부분 어필하는 것이 목표이다.

 

 

이번 팀과제는 리듬게임을 하기로 했다.

휴일이 길어서 그동안 간단하게 공부할 것들을 정하고 게임의 방향성과 계획을 짰다.

 

<필수 구현 계획>

노래에 맞게 노트 생성(JSON을 통해 실시간으로 직접 노트를 찍거나 단순히 BPM에 맞게 노트 생성)

노트 타격 판정

타격에 따른 애니메이션

콤보 및 점수

 

<선택 구현 계획>

사용자 모드(사용자가 원하는 노래 추가 및 노트 생성)

일정 콤보가 되면 피버 타임 구현

음량 조절

 

전체적으로 8Bit 컨셉으로 노래 또한 8Bit로 몇 가지 만들 생각이다. 에셋은 각자 원하는 것을 하나씩 가져와서 상의 후 결정하기로 했다.

주말에 이론강의 + 수준별 강의를 정주행하고 하고 개인 과제 때 오브젝트 풀에 대해 정확히 이해하지 못하고 사용한 것 같아서 좀 더 공부해야겠다. 개인과제에서 전체적인 설계가 많이 무너졌기 때문에 초기에 설계를 확실히 짜고, 특히 이전 강의에 나왔던 애니메이션과 FSM의 스크립트 구조를 공부해볼 생각이다.

+ Recent posts