인벤토리와 같은 UI를 활성화 시 클릭을 해야하는 상황이 오는데 그 때 아이템을 선택함과 동시에 공격 버튼이 나간다면 참 난감할 것이다. 그래서 이러한 상황을 없애기 위한 방법을 알아보고자 한다. 1. 문제점 이 부분은 인풋액션 값이 들어오면 하이라키 창을 조건으로 걸어 인벤토리를 온/오프 하는 토글 가능인데 여기서 문제점이 있다. 1. 인벤토리가 켜질 때 마우스 포인터가 보이고 끄면 없어져야 한다. 2. 인벤토리의 아이템을 클릭 시 플레이어의 행동은 멈춰야 한다. 이러한 조건을 만족하지 못한다는 것이 큰 문제점이다. 2. 해결법 우선 UIManager에 UI의 게임오브젝트를 추가하거나 삭제하는 함수를 만든다. 예를 들어 인벤토리라는 게임오브젝트를 AddUICound 함수에 넣어 사용한다면 해쉬셋에 우선..
분류 전체보기
프로젝트에서 카메라의 이동 방향을 알아내어 플레이어가 그 방향으로 움직이게 하는 코드를 구현하고 있었다. 하지만 Vector와 Transform에 대한 확실한 개념이 잡혀있지 않았다. 그렇기에 방향에 관한 개념을 정리하고자 한다. 1. 방향을 나타내는 Vector3 Vector3는 World의 방향성을 나타낸다. 그렇기 때문에 Rotate값을 주어도 방향은 바뀌지 않는다. 즉, 방향을 고려하지 않는다. 1 - 1. Vector3의 방향 Vector3.up == Vector3(0, 1, 0) Vector3.down == Vector3(0, -1, 0) Vector3.forward == Vector3(0, 0, 1) Vector3.back == Vector3(0, 0, -1) Vector3.left == V..
항상 캐릭터가 움직여야 하는 프로젝트를 진행할 때 카메라의 정보를 스크립트로 받아왔어야 했다. 하지만 이러한 과정이 필요없게 해주는 Virtual Camera기능을 소개하고자 한다. 1. Virtual Camera란? 시네머신 가상 카메라 라고 불리며 빈 게임 오브젝트에 추가하는 컴포넌트 형식의 기능이다. 즉, 유니티 씬의 메인 카메라를 가상 카메라로 제어할 수 있다. 2. 사용법 유니티 씬에서 우클릭을 한 후 Cinemachine에 들어가면 Virtual Camera라고 나온다. 이 목록을 클릭하면 Virtual Camera 라는 파일이 생기고 Main Camera에 자동으로 CinemachinBrain이란 컴포넌트가 적용된다. 우선 카메라의 설정은 Virtual Camaera파일에 적용되어있는 Cin..
오늘은 3D를 이용하여 입체적인 건물들을 간단하게 만들 수 있는 ProBuilder라는 패키지를 소개하고자 한다. 1. ProBuilder란? 3D 모델링과 레벨 디자인 툴의 고유한 하이브리드로, 지오메트리 빌드에 최적화되었지만 세부 편집과 UV언래핑도 가능하다. 예를 들어 터레인, 차량, 무기, 건물 등 여러 종류의 프로토타입을 빠르게 제작할 때 주로 쓰인다. 2. 설치 유니티 상단 카테고리의 Window - PakageManager로 들어가서 ProBuilder를 찾아 설치하면된다. 3. 사용법 유니티 상단 카테고리 Tools에 들어가면 ProBuilder 항목이 있다. 그곳에서 ProBuilderWindow를 클릭하게 되면 기능을 실행할 수 있는 기능Window창이 뜨게된다. New Shape를 누..
이번 프로젝트에서 곡괭이와 관련된 기능을 구현 중에 자원을 채취해야하는 기능이 필요했었다. 어떻게 구현하면 좋을지 곰곰히 생각해봤는데 아무리 생각해도 플레이어가 들고있는 상태에서 Ray를 쏴주어 오브젝트를 감지하는건 말이안됐다. 그리하여 찾아보니 애니메이션의 한 동작에 함수를 넣는 기능이있었다. 그리하여 이 기능을 오늘 설명하고자한다. 1. 사용법 현재 곡괭이의 Attack애니메이션 부분을 나타내고있다. 가만히 보니 우측 상단에 하얀 분필처럼 하나가 있는걸 볼 수 있다. 바로 Add event. 라고 뜨는 저 부분을 눌러주면 자신이 원하는 위치에 함수를 넣을 수 있다. 나는 곡괭이가 공격하여 자원에 닿을 것 같은 부분에 OnHit라는 함수를 넣어주었다. 그렇게되면 현재 곡괭이 프리팹이 Ray를 쏴서 자원..
오늘은 팀프로젝트의 기능적인 부분들을 마무리하고 인트로와 아웃트로를 만들기로 했다. 나는 아웃트로를 담당하게되서 이 부분을 어떻게하면 잘만들 수있는지 찾아보던 도중 Timeline기능을 알게되었다. 그래서 이 개념에 대해 알아보고자한다. 1. Timeline이란? 게임오브젝트에 연결된 트랙과 클립을 시각적으로 정렬하고 인트로, 아웃트로같은 시네마틱 영상을 만들 수 있다. 2. Timeline 생성 Timeline은 위 사진과 같이 Window카테고리에서 생성할 수 있다. 그 후 타임라인을 만들 빈 게임오브젝트를 생성해서 Create 해준다. 나는 Timeline이란 이름의 빈 게임오브젝트로 생성했고 그와 동시에 Playable Director 컴포넌트가 자동생성된다. 3. TrackGroup 이제 위의 ..
오늘 팀원들끼리 모여서 각자 맡은 기능을 병합하는 시간을 가졌다. 병합 자체는 아무 문제없이 진행 됐지만 큰 문제가 하나있었다. Scene에서 다른 Scene으로 이동하는 경우에 각각의 Prefab은 어느 Scene에서나 실행되어야 하는데 지금 내 Prefab은 독립적이지 않고 정보가 다 빠져있었다. 그래서 이 Prefab을 어떻게하면 독립적으로 관리할 수 있는지 설명하고자한다. 1 - 1. 문제점 현재 내가 만들고 있는 TestScene이다. 여기에서 Player라는 프리팹에 적용되어 있는 Inventory Script에 InventoryCanvas의 Btn값들을 모두 집어 넣었다. 그리고 오버라이드를 모두 적용하고 아래에 공용 Prefab 폴더에 InventoryCanvas와 Player 프리팹을 넣..
항상 프로젝트를 진행할 때 각 기능의 Manager를 만든 다음에 모두 싱글톤화 하여 접근했던 경험이 있다. 하지만 이번 팀 프로젝트에서는 GameManager만 싱글톤화 하여 모든 매니저를 관리하기로 했다. 이를 통해서 얻게 된 지식을 설명하고자 한다. 1. GameManager 싱글톤 우선 GameManager를 싱글톤화 하려면 싱글톤 기능을 선언해야한다. 제일 기본적인 형태는 "static 클래스명 이름(Instance)" 의 형태로 선언 후 Awake 부분에 "이름(Instance) = this"의 형태로 사용하면된다. 위 사진처럼 조건이 필요할 경우 Awake 부분에 알맞게 적용하면 된다. 그 후 자신이 관리할 매니저들과 클래스들을 선언하여 다른 클래스들이 접근할 수 있도록 준비한다. 2. Ga..