Unity 29

[Unity][VR] 리듬 게임 모듈화

학회 프로젝트에서 VR 리듬게임 모듈화를 하기로 해서 해보겠다. 바로 ㄱ A. Sketch 모듈화란? 더보기 나도 이번에 처음 접해본 단어인데, 리듬게임을 만드려면 언제 어떤 노트를 보낼지 하나하나 다 정해야 한다. 그런데 모듈화를 하면 직접 노트를 내가 플레이하면서 찍는 것이다. 그 찍은 노트를 토대로 게임을 플레이할 수 있다. 글의 마지막 최종 결과 영상을 보면 이해가 더 잘 될것이다. VR컨트롤러를 좌우로 움직이며 노트를 찍고 플레이하는 리듬게임 모듈을 만들어볼 것이다. 대충 스케치는 다음과 같다. 더보기 요약하자면, recording이 시작되면 특정 간격(n초)마다 left/right 포인트의 시간과 거리를 list에 저장한다. 그리고 playing이 시작되면 해당 list들을 읽으며 노트가 re..

Unity/Dev 2023.06.15

[Unity] 오버워치 따라잡기! 트레이서 편(6) - 기본 공격 장전

정말정말 오래걸려서 트레이서의 기본 공격 이론을 구현했다. 이제는 장전을 구현해볼 것이다. 바로 ㄱㄱ A. 트레이서 기본 공격 분석 트레이서의 좌클릭 기본 공격에 대한 정보는 위와 같다. 한 번당 두개의 총알이 나간다던가 수정해야할 정보가 보이지만, 이러한 디테일은 나중에 추가하도록 하자. 먼저, 탄창을 40이고 장전 타임은 1초인것만 생각하면 된다. 장전에는 두 가지 정도가 있을 것이다. 1. R을 눌렀을 때 장전. 2. 기본 공격을 하는데 탄창이 0일 때 자동으로 장전. B. 탄창 개념 도입 탄창, 장전에 관련된 변수들을 정의해주고 트레이서의 탄창 40개와 장전시간 1초를 설정해줬다. maxBulletNum은 탄창 최대 개수, bulletNum은 현재의 탄창 개수가 될 것이다. Reloading을 장..

[Unity] 오버워치 따라잡기! 트레이서 편(5) - 기본 공격

오랜만에 돌아온 오버워치 따라잡기! 학기 시작하니 블로그 쓰는게 점점 힘들어지고 있다.. (핑계 대지 말고 열심히 살자) 오늘은 드디어 미루고 미루던 기본공격! 바로 시작 ㄱㄱ A. 트레이서 기본 공격 분석 트레이서 기본 공격은 히트스캔이다. 그리고 일정 반경 내에서 총알이 hit한다. 기본 공격 테스트 영상 위 영상을 보면 기본 공격시 UI의 원 내에서만 총알이 날라가는 것을 볼 수 있다. UI 기준이므로 가까울 때는 총알이 한 곳에 모이게 되고, 멀면 흩어지게 된다. 그렇다면.. 이렇게 총알이 원뿔 형태로 나아가게 하면, 멀수록 더 넓은 원의 hit range를 갖지 않을까? 즉, 총알 하나의 hit ray가 저 원뿔 내로 랜덤하게 형성되어야 한다. 좀 더 정확히 분석 해보자..! (하 머리 아파) ..

[Unity][VR] Object Pooling을 사용하여 물방울 퍼즐 상호작용 만들기

이 전 글에서 손을 모아서 물방울을 만드는 상호작용을 구현했었다. https://gycblog.tistory.com/28 [Unity][VR] 손을 모아서 오브젝트를 만들고 키우는 스킬 학회 프로젝트 중 손을 모아서 물방울을 만드는 스킬을 구현하게 됐다. (사실 쓰일지 안쓰일지 모르지만 재밌을 것 같아서 만들어봄) A. 스킬 정보 손을 모으면 물방울을 키울 수 있음. 물방울이 gycblog.tistory.com 그러나, 회의 최종 결과 다른 상호작용으로 결정! 이건 내가 노션에 정리한 내용을 참고해주도록 하자. 최종 결정되자마자 적어놓은 것들이다. 이걸 기반으로 상호작용을 구현해보자! A. Object Pooling을 이용하여 여러 개의 물방울 spawn 오브젝트 풀링은 이미 전에 구현했던 적이 있어서 ..

Unity 2023.05.02

[Unity][VR] 손을 모아서 오브젝트를 만들고 키우는 스킬

학회 프로젝트 중 손을 모아서 물방울을 만드는 스킬을 구현하게 됐다. (사실 쓰일지 안쓰일지 모르지만 재밌을 것 같아서 만들어봄) A. 스킬 정보 손을 모으면 물방울을 키울 수 있음. 물방울이 다 만들어지기 전에 손을 떼면 그냥 물방울은 떨어짐. 물방울을 다 만들고 손을 떼면 그 물방울은 공중에 떠있음. 공중에 떠 있는 물방울을 grab해서 사용할 수 있음. 생각보다 쉽고 간단해보였는데, 개발하면서 꽤 막히는 부분이 있었음..! B. 두 손 사이의 거리 측정 두 손의 위치는 OVRCameraRig의 Right/LeftHandAnchor로 받아온다. 아주 간단한 거리 공식을 적용해서 두 손 사이의 거리인 handDistance를 구함. handDistance를 코솔창에 출력해서 테스트해본 결과, handD..

Unity/Dev 2023.05.02

[Unity] 플레이어 체력(HP바) 구현하기!

트레이서 편을 이어서 제목을 정하려 했으나 사실상 HP의 개념은 모든 캐릭터, 심지어 모든 FPS 게임에 적용되므로.. 제목을 트레이서 편으로 하지 않았다... 라는 설명입니다. 오버워치 위키(레퍼런스 1번) 사이트에는 오버워치 영웅들의 HP 정보가 잘 적혀있다. 지금까지 구현한 영웅은 트레이서밖에 없으니, 트레이서의 HP를 구현해보도록 하자. 다행히 트레이서는 이상한 overhealth 같은거 없이 150 health를 가지고 있다. (트레이서부터 구현하길 잘한듯..) A. 플레이어 Health 구현 및 표현 사실 health만 구현하는 것은 쉽다. Float 변수 하나 만들어서 150으로 지정해주면 끝. 중요한 건 이 health를 HP bar를 통해 유저가 게임 플레이하며 보는 것이다. 빠르게 HP..

[Unity] 오버워치 따라잡기! 트레이서 편(5) - Recall 시간역행

이번 편에서는 시간 역행할 때의 카메라 무빙을 자연스럽게 구현해보겠다. 점멸과 시간 역행 구현은 전 편들을 보면 된다. A. 오버워치에서 트레이서의 시간 역행 장면 영상에서 알 수 있는 것은 1. 위치는 정확히 과거를 따라간다. 2. 카메라는 중간에 뭘 했든 점멸 직전의 카메라에서 3초 전의 카메라까지 자연스럽게 이어진다. 따라서, 이번 편에서 해야하는 것은 2번이다. (1번은 전편에 구현 완료) B. 역행시 자연스러운 카메라 이동 구현 전 편에서 Queue에 트레이서의 위치, 회전 정보를 수집했듯이, 이번에도 카메라의 회전 정보를 Queue에다가 수집하면 된다. Queue가 아닌 List에다가 수집해야한다. 이번에는 첫번째 정보만 필요한 것이 아니고 마지막 정보도 동시에 필요하므로 List를 사용할 것..

[Unity] 오버워치 따라잡기! 트레이서 편(4) - Recall 시간역행

드디어.. 트레이서 시간 역행이 돌아왔다.. 일단 개발에 들어가기 전에 트레이서가 시간 역행을 하면 어떤 일이 벌어지는지 분석해보자. A. 트레이서 시간 역행 분석 직접 옵치에 들어가서 해본 결과.. 역행을 하면 다음과 같은 일이 발생한다. 1. HP 회복 2. 장전 3. 역행할 때 이동, 기본 공격, 스킬 사용 불가 4. 카메라가 고정됨 (마우스로 움직일 수 없음) HP 회복이나 장전 같은 경우에는 HP와 총을 개발한 후에 적용할 것이다. 이번 편에서는 역행하는 것만 구현하려고 한다. B. 트레이서 시간 역행 구현 레퍼런스 1번에 따르면, 트레이서의 시간 역행은 3초 전으로 돌아간다고 한다. 역행이 걸리는 시간은 1.25초이다. 즉, E 스킬을 사용하면 1.25초 만에 3초 전의 트레이서로 역행하는 것..