git: VCS(version control system) push: 자신의 브런치로 업로드 pull: 부모 브런치에서 가져오기 merge: 개인의 브런치끼리 서로 확인되면 합치는 작업 main: 최종적으로 push해야할 곳 branch: 각각의 개인 저장소. 작업을
Rigidbody - 중력을 주고 싶을 때 사용하는 컴포넌트 Collider - 충돌처리를 주고 싶을 때 사용하느 컴포넌트 OrderinLayer - 2d 게임에서 sprite의 무엇이 가장 앞에 오는지 뒤로 가는지 설정가능 localscale - transform에
pixels per Unit: Scene창에 보이는 x,y의 한 칸의 범위,길이?를 지정해 줄 수 있다. 사용하려는 sprite의 pixel을 확인하고 딱 맞게 혹은 해당 픽셀의 배수로 설정해주면 딱 맞게 사용하면 될 것 같다. Instantiate(생성할 게임 오
유니티 광고 넣기Widow - General - Services - Advertisement Legacy 설치Configure - Services - Members- Dashboard하면 Unity Cloud에 와진다.Unity Ads를 추가광고활성화를 해준다.Setu
Prefab화 시킨 오브젝트에서 Scene에 있는 오브젝트 참조가 안되는 문제 해결WaypointManager로 Scene에 있는 Transform값 연결Monster프리팹에 MonsterMovement2D 스크립트 연결 Scene에 배치 된 WaypointManage
캔버스 설정하기위는 내가 만들고 있는 게임이다.보통 게임을 만들 때 Canvas - Render Mode를 ScreenSpace - overlay로 설정한다. ScreenSpace - overlay:기본 설정 값이기도 하며, 자동으로 캔버스를 채우고 해상도를 변경하면
보통 디펜스 게임을 하면 강화하고 합성하고 해서 다음 웨이브를 준비한다.그래서 오늘은 캐릭터 합성 구현하기현재 만들고 있는 화면 인데 1\. 합성?조합?을 위한 조합표 버튼 만들고 누르면?2\. 조합표가 등장하고3\. 조합식을 따라 서로 다른 캐릭터 3개를 합성하면?4
Pixel Per Unit (PPU)스프라이트의 픽셀 수와 해당 스프라이트가 유니티 내에서 차지하는 공간의 관계를 말한다.위 사진처럼 PPU를 직접 설정해 줄수 있는데, PPU에 높은 값을 입력해줄 수록 Sprite는 작아진다. PPU는 1 유닛(유니티 공간에서의 1)
ScriptableObject 만들기스크리터블 오브젝트는 유니티에서 데이터를 저장하고 관리하는 유연한 데이터 컨테이너이다.공통된 부분을 SO로 사용하여 다른 캐릭터에도, 여러 오브젝트에 재사용하는 등 사용할 수 있다.enumenum은 열거형을 말한다. 보통 상태나 값을
InputField플레이어의 이름을 입력 받고, 저장하기 위해 InputField를 사용했다.입력받은 데이터를 string으로 바꾸고 주었고, static으로 다른 클래스에서 참조하기 쉽게 구현하였다.InputField 인스펙터 창을 보면 위와 같은 기능을 제어할 수
DateTime.Now 이 함수는 시간 및 날짜를 불러올 때 사용된다. string currentTime; currentTime = DateTime.Now.ToString("HH:mm:ss"); 이렇게 작성하면 시간:분:초(2자리씩)나오게 된다. 이 외에도 yyy
Quaternion을 이용한 캐릭터 및 무기 회전 오늘 구현한 부분은 2D게임에서 마우스가 캐릭터 보다오른쪽에 있으면 오른쪽을 보고, 캐릭터 보다 왼쪽에 있으면 왼쪽을 보도록 해주는 작업이다. 무기는 마우스 위치에 따라 방향이 정해지도록 구현하기이다. 여기서 먼저
ScriptableObject(SO) 스크립터블오브젝트란? 유니티에서 데이터를 편하게 관리하기 위한 것으로 데이터 컨테이너라고 보면 된다. 코드와 데이터를 분리하여 코드를 깔끔하게 관리할 수 있다 인스텍터 창에서 수정하고 관리할 수 있고, 재사용 가능한 데이터를 담
타이머 만들기 타이머가 0이되면 게임이 멈추게 구현해보자. 위 코드를 작성하며 문제가 있었다. 나는 초 단위를 즉 int를 사용하려 했지만, deltaTime은 float였다. 여기서 강제로 (int)를 붙혀 형변환을 해보았는데 시간이 아에 멈추게 되어서 그냥
프로퍼티 싱글톤은 많이 써 봤지만 인스턴스, 프로퍼티들의 개념을 잘 모르고 썼던 것 같아 정리하게 되었다. 프로퍼티란? 클래스의 데이터(필드)에 읽기 또는 쓰기 작업을 할 수 있도록 하는 맴버이다. 이어 나오는 get;set; 이것이 무엇인가? get(접근자)
명명 규칙 케이스 Camel case 흔히 (private)변수이름을 명명할 때 사용되며, 첫 단어의 앞글자는 소문자, 두 번째 단어의 첫글자는 대문자로 쓰는 방식이다. ex) int playerIndexNum; Pascal case 흔히 (public)변수이름,
AddForce이용하기 로켓시뮬레이션을 만들어보자. 위 코드처럼 vector2.up으로 윗 방향으로 speed만큼 주는 이렇게만 주면 힘이 부족하다. 상수값을 곱해줘서 구현할 수도 있지만 유니티에서 제공하는 AddForce를 이용해보자. 아래는 유니티문서에서 가져
동기/ 비동기 >코루틴
이번에 만들어 볼 것은 뮤직존으로 특정 범위에 들어가면 음악이 서서히 fade효과를 주며 올라갔다 나가면 서서히 줄어드는 것을 만들어 볼 예정이다.Mathf.ApproximatelyApproximately: 근사값이면 같도록 처리해주는 함수로, 1.0f = 1.0f인가
Clamp 클램프란? 입력값에 최소, 최대값을 지정하여 넘지 않도록 해주는 함수이다. 아래의 형식을 보자. >float Mathf.Clamp(float value, float min, float max) (+ 1 overload) 위처럼 입력값을 주고 최소,최대순
오늘은 만들고 있는 게임 코드를 전반적으로 다시 살펴보는 시간을 가졌다.먼저 플레이어의 이동을 담당하는 InputSystem 이번에는 Behavior를 SendMessages가 아닌 InvokeUnityEvents로 해보았다. 버튼ui의 onclick처럼 이벤트를 등록
인벤토리 인벤토리를 만들어 보자. 지금은 UI와 로직부분을 나누어 놓지 않은 상태로 되어 있지만 추후에 구분할 예정이다. ItemSlots
먼저 유니티에서 Sound를 조절하기 위해 사용할 컴포넌트를 알아보자.AudioClip오디오 클립은 유니티에서 사운드를 사용할 수 있도록 하는 데이터 타입으로 mp3,wav등의 파일형식을 지원한다.AudioSource위에 있는 오디오파일을 재생 및 볼륨등 조절하는데 사
장착 아이템(무기)를 손에 들고 있는 것 처럼 보이게 하기 장착 아이템(무기)를 손에 들고 있는 것 처럼 보이게 해보자. 장착아이템을 보여주기 위해서 사용할 방법은 카메라의 CullingMask를 이용할 것이다. 메인카메라는 그대로 두고, 새로운 카메라를 만들어
어제에 이어서 플레이어가 자동으로 목적지로 이동하던 중 몬스터가 있다면 몬스터를 먼저 공격하도록 구현을 해보자.바로 코드를 보자.physics.OverlapSphere함수를 통해 플레이어 위치에서 detectRange반경내에, enemylayer에 모든 적을 탐색하게한
LayerMash 활용 보통 적이 플레이어 닿았을 때, 플레이어를 파괴한다. 라는 식으로 피하는 게임을 간단히 만들 때는 CompareTag("적"); 이런식으로 구현을 했었다. 하지만 이의 단점은 문자열 비교여서 성능적으로 아쉽고(사실 크게 못느낄순 있다), 또
드디어 최종프로젝트가 시작되었다!먼저 장르는 RPG장르로 가려고 했는데 출시를 목표로 잡고 8주간 진행하려하니.. 시간이 부족하기도 하고 저를 포함하여 팀원들도 자신이 없어 하는 모습을 보아 컨텐츠요소들을 줄이고 재미요소를 챙겨보자라는 의견들이 나와 조금 더 기획 해봐
현업을 가면 기획자들과 같이 일하게 될 것이고, 기획자들이 유니티를 만지며 so데이터를 수정하는 것은 번거로울 거다. 그래서 Excel에 데이터를 입력하고 이를 json으로 변환시켜 이를 사용해보도록 하자.변환하는데에 많은 방법들이 있는 것으로 알지만 오늘은 구글 시트
보통 매니저클래스에 싱글톤을 많이 사용한다.매니저들이 많아지면 싱글톤이 그 만큼 많아지기도 하고 겹치는 코드가 계속해서 생기기도 한다.또 이에 따라 전역 클래스가 많아진다.이를 하나의 싱글톤을 추상화 클래스로 만들어 제네릭타입으로 다른 타입을 모두 받아 단일 인스턴스로
퍼즐 퍼즐오브젝트에 넣기 퍼즐이 최종적으로 위치해야 할 목적지 transform 오브젝트 씬에 배치하기 위 목표 위치를 distance이용하여 0.0001f보다 작으면 true 반환하기 혹은 collisionstay이용하여 딱 끝쪽에 위치하게 해서 닿고 있으면 tru
오늘은 퍼즐에서 많이 사용되는 3블럭이 모이면 터지고 사라지는 부분을 구현할 예정이다.목표를 정하고 구현해보자.1\. 퍼즐 클래스 만들어서 퍼즐 정보넣기2\. 같은 색상의 퍼즐이 3개가 닿으면 파괴되는 클래스퍼즐정보에는 들어갈 색상여기부터는 세부적으로 나누어 보자.2-
오늘은 퍼즐 만든 부분을 리펙토링 해보았다.퍼즐 상위 클래스로 공통적으로 필요한 자료, 공통 메소드를 묶어 상속 받아 사용식으로 구성했다.먼저 2개의 퍼즐 로직은 목적지퍼즐, match3퍼즐로 구성되어있다.퍼즐에서 기본적으로 필요한 것들을 추상 클래스로 구현하였고, 하
퍼즐을 만들었으니, 게임에서 플레이해보며 테스트를 해보기로 했다.환경 에셋을 배치하고, 간단하게 튜토리얼이 되는 맵을 구성하였다.여기에서 테스트를 하려하니, 스테이지 클리어 조건이 없었다.퍼즐은 단순히 목적지에 도달하면, 3개 맞춰져 사라질 뿐 스테이지에 대한 조건 설
오늘은 어제에 이어 3번째 퍼즐을 만들어보았다.이번에 만들어볼 퍼즐은 LineRenderer와 reflect를 이용한 레이저굴절 로직 퍼즐이다.아무래도 퍼즐요소는 layer와 collision기능을 많이 사용할 수 밖에 없는건지 내가 많이 쓰는지는 모르겠지만 가보자.먼
오늘은 객체지향이란 무엇인가와 유니티 생명주기에 대해 공부해보겠다.면접에서도 많이 나오는 질문이기도 하고 개념을 한 번더 집고 가면 좋을 것 같다.취업 사이트를 보다가 객체지향 프로그래밍에 대해 이해하고 계시는 분 이라는 자격요건을 본 적이 있는 것 같다.객체지향 프로
오늘은 씬 매니저에 대해 알아보겠다. 씬을 이동하고 또 씬 안에 씬을 넣기도 가능하도록 구현할 예정이다. > ### SceneManager 씬 매니저를 만들어보자. 씬 매니저는 이미 유니티에서 정의하고 있는 클래스이므로 SceneLoadManager라고 이름을 지어
오늘은 트러블 슈팅을 작성해본다. > 문제 분명 잘 되던!! 퍼즐 클리어 검사를 하고 모든 퍼즐이 클리어 되어야 스테이지가 클리어 되던 로직이 작동을 안하는 문제 발생. > 원인 원인은 리펙토링을 하다 던전씬에 들어오면 던전 매니저, 퍼즐 매니저, 스폰 매니저를
오늘은 스테이지 작업을 했다.어제에 이어 스테이지 형식으로 던전을 구현중이다.스테이지는 맵에 몬스터, 퍼즐, 배경 모든 요소들을 넣어 프리팹으로 만들고, Resources로드로 불러오는 방식인데, 이 전에 json으로 스테이지 인덱스에 맞게 이름과 위치,스케일 등 커스
던전 클리어 시 클리어 UI 생성하기를 해보자.UIManager로 원하는 제네릭 클래스를 호출해준다.SceneLoadManager를 통해 Game씬으로 이동한다. 로드모드를 single로해 다른 씬은 제거해준다.
유니티 생명주기 중 UPdate부분을 더 살펴보자. Update의 종류로는 크게 3가지가 있다. Update, FixedUpdate, LateUpdate 이 세 가지의 특징을 알아보자. > ### Update 업데이트의 특징은 매 프레임 호출 되며, 프레임 당
오늘은 스테이지 6개를 만들어야해서,, 오전 후다닥 만들었다.스테이지를 프리팹으로 만들어놓고, 엑셀에서 위치, 회전, 스케일 등을 적용해준다.6 스테이지는 보스 스테이지로 할 예정이다.그리고 ui 디자인을 꾸며보았다.ui는 uimanager를 이용해서 연결해주었다.이제
데이터 연결하는 부분에 문제가 생겼다. 던전 데이터를 json으로 불러와 연결해 주는 작업을 하는데 .. 잘 안되네,, 맵 데이터에는 맵 스폰위치, 몬스터 스폰 위치, 몬스터 스폰 카운트 정보를 가지고 있게 해주고, transform을 인스펙터에 연결해주어 던전 매니
오늘은 데이터 연결 부분을 공부했다.구글 시트에서 json으로 변환하는 컨버터가 있어 편하게 바꾸어주고, 엑셀에서 만들어둔 데이터를 클래스로 만들어주자.던전에서 관리해줄 데이터들을 클래스로 만들어주었다.리스트 보다 딕셔너리를 사용하면 키값으로 보다 찾기 편하고 빠르게
오늘도,, 던전 데이터 작업을 진행하였다.먼저 기존에 사용하던 데이터이다.StageId로 딕셔너리의 키값을 받아 objectname에 스테이지 이름을, SpawnMonster를 통해 소환할 몬스터의 이름 그리고 생성할 갯수를 종류별로 1,2,3로 받는 식으로 진행되었다
오늘은 구현한 부분을 한 번 정리해보자.데이터 로드구글 시트 -> Json -> 데이터 매니저(로드) -> 클래스 -> SetData -> 데이터 로드 완료데이터 매니저 -> 키 값(스테이지 id) -> 던전 데이터 로드 -> 던전 데이터 로드 완료던전 생성 과정스테
오늘은 스택과 힙의 차이에 대해 공부해보겠다. > 스택 스택은 정적 메모리가 저장되는 영역이다. 특징으로는 > 힙 힙은 동적 메모리가 저장되는 영역이다. > 씬 로드 매니저 씬 로드 매니저는 비동기로 만들어준다. 왜냐하면 씬을 이동하다 보면 방대한 양으로 로
오늘 최종 프로젝트 중간 발표회를 가졌다. 사실 4주정도의 기간동안 진행했지만 진척도는 조금 아쉬움이 남는다. 남은 기간 얼마 되지는 않지만, 사이클은 나왔으니 화이팅해서 살 붙히기 작업에 들어가야 될 것 같다. 오늘은 중간발표회를 진행한 만큼 코드 리뷰를 해보려고
오늘은 해당 별자리에 맞는 스테이지를 불러오는 작업을 진행했다.먼저 12별자리를 중 하나를 선택하면 그 별자리에 맞는 스테이지 1-1, 1-2 등을 생성해주는 부분이다.각 12별자리 버튼에 달아 줄 함수를 작성해보자.각 버튼을 스크립트에 연결해준 뒤, for문을 돌며
스테이지 락 언락 하기각 별자리와 스테이지 불 배열을 만들어준다.싱글톤을 상속받는 게임매니저에 클리어 정보를 생성해준다.스테이지 ui가 나오면 각 스테이지 버튼에 만들어준 스테이지 정보를 넣어주는 작업을 한다.2중 for문으로 각 별자리와 스테이지를 false로 해 잠
오늘은 튜토리얼 시스템을 구현해볼 예정이다.위처럼 fsm방식으로 베이스를 만들어주었다,컨트롤러를 통해 튜토리얼이 순차적으로 실행 되도록 하였다.이제 순차적으로 들어갈 튜토리얼들을 만들어주면 된다,
오늘은 컴투스 공모전 마감일이라 기획서를 작성하는 시간을 가졌다.재미요소, 차별성, 시나리오, 컨텐츠, 상세설명 등 적을 것이 상당히 많았던 것 같다.몬스터들의 수치까지 작성을 못해서 아쉽지만 시간이 많지도 않았고, 생각보다 오래 걸려 지쳤던 것 같다. 기획자들 리스펙
오늘은 튜토리얼 작업을 이어 진행했다.튜토리얼은 게임을 시작하고 처음 마을에 입장하면 한 번,스테이지를 선택하여 첫 번째 별자리의 첫 스테이지에 입장하면 한 번 실행되도록 하였다.여기서 문제가 발생하였는데, 마을에 들어올 때마다, 첫 스테이지에 들어올 때마다 튜토리얼이
튜토리얼 네비게이션(방향 시스템) 마무리, 스테이지 수정, 스테이지 요소 추가
오늘은 스테이지 구성을 위해 스테이지 필요한? 스테이지가 더 재밌게 굴러가기 위한 요소를 추가해보았다.생각한 것은 스위치가 되는 곳에 플레이어 혹은 퍼즐이 닿게 되면 발판이 앞으로 움직여 다음 장소로 갈 수 있도록 하는 것이 였다.그리고 플레이어 혹은 퍼즐이 떨어지면
다음은 오늘은 한 것들이다. 1\. 보스 처치 시 포탈 생성2\. 4-6 스테이지 퍼즐 및 구성요소들 배치 작업3\. 별자리 및 스테이지 선택 UI 디자인개발 트랙을 들으며, 코딩만 해도 부족하지만 게임의 완성도를 위해서는 디자인 및 설계도 역시 고민하고 해야만 했다.
오늘도 빌드를 위해 테스트를 하며 각종 버그들을 발견하고 고치는 작업을 했다. 이번주에 유저테스트를 진행하기 위해 아직 완성되지 않은 부분들이 많지만 마무리하고 추가개발은 유저테스트 이후에 더 해야할 것 같다. 오늘 수정한 버그들 첫 번째이다. 사실 버그는 아니고,
오늘은 빌드를 하는 날이라 분주하게 버그를 마무리하고 window빌드와 webgl빌드를 진행하였다.설정창 만들기, 게임 시작 시 커서가 락 되어 유니티에서 테스트가 어려워 진 문제도 있었고,보스 소환을 했는데 움직이지 않는 문제, 각각에 스테이지를 구성하는 오브젝트에
itch.io에 배포를 시작한지 하루가 지났다.하루지만 피드백도 조금 들어왔고, 인지하고 있던 버그들이 있었다.오늘 아침 플레이어가 죽는 문제를 호다닥 해결하였다.플레이어는 FSM으로 동작하는데 플레이어에서 인터페이스로 데미지를 받는 부분을 수정하여 체력이 0이하라면
오늘은 팀원들과 대면으로 만나 프로젝트 평가 및 피드백을 갖는 시간을 가졌다.유저테스트를 진행하며 받았던 피드백들을 통해 꽤 많은 버그들을 발견하였고, 벨런스 부분도 보다 객관적으로 알게 되어 반영할 부분들을 정해보았다.플레이어의 경우 움직임이 불편한 부분들, 레이저
오늘은 브로셔를 마무리하는 작업을 진행하였다. 정리하며 보니 fsm 구글시트 리소스 매니저등 공통적으로 많이 사용될 만한 부분의 코드들이 있어 한번더 짚고 넘어가면 좋을듯하다. 내일 리소스 매니저 유아이매니저 fsm등 그리고 패턴에 대해 공부해야겠다.
.