[개발일지] 34[완결]. 야생 UI 수정 & 메인 씬 기능 추가
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번엔 야생 UI 를 손봤다. 체력바에 현재 체력을 표시하도록 했고, 화면 상단에 타이머를 야생이 끝나기 까지 남은 시간으로 설정하도록 했다. 그리고 야생의 난이도가 어려워질수록 배경이 어두워지는데 타일맵의 색은 그대로라 위화감이 있어서 Light2D 를 이용했다. 일단 플레이어한테 빛을 넣어놨고, 맵에 global light 을 만들어놨다. 맵이 어려워질수록 global light 을 어둡게 해서 타일맵의 색도 어두워지도록 했다. 그리고 야생에서 새로운 점토를 잡아왔을 때 메인 씬에서 점토 구매 버튼 위에 별표가 뜨도록 했다. 새로 잡은 점토 페이지로 도달하기 전까지는 별표가 없어지지 않는다.    1. 게임 오브젝트메인 씬과 야생 씬으로 파트를 나누어서 설명하려고 한다. 1.1 메인..
[개발일지] 33. 메인 씬 오디오 적용 & UI 뒤쪽 게임 오브젝트 클릭 방지
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번에는 메인 씬에 오디오 기능을 적용했다. bgm 과 효과음을 넣었다. 그리고 이전에는 UI 가 위에 있는데도 불구하고 밑에 가려진 점토 게임 오브젝트가 클릭돼서 기능이 수행됐다. 이를 막기 위한 로직을 추가했다.    1. 게임 오브젝트BGM 게임 오브젝트를 새로 만들었다.  그리고 기존의 있던 게임 오브젝트들에 각각 Audio Source 컴포넌를 부착하고 스크립트 상에서 스스로 효과음을 플레이 하도록 했다. ClayButton 게임 오브젝트를 예로 들면 인스펙터 창의 모습이 다음과 같다. 우선 Audio Source 컴포넌트가 추가되었다. 그리고 자신의 스크립트에 Audio 기능과 관련된 변수를 선언했다. 그리고 PlaySound() 메서드를 만들었고 이를 호출해서 효과음을 재생..
[개발일지] 32. 야생에서 잡아온 점토 생성
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번에는 야생을 클리어 해서 잡아온 점토를 메인 씬에 소환하도록 했다. 만약 이미 점토 집이 꽉 찬 상태라면 소환하는 대신에 돈으로 받도록 했다. 그리고 이제는 야생 판넬의 버튼에 기능을 연결해서 난이도를 설정할 수 있도록 했다. 이제 쉬움 야생 버튼을 누르면 알아서 야생 씬이 쉬움 단계로 세팅된다.    1. 프리팹이번에 새로 만든 프리팹은 normal, hard 야생에서 얻을 수 있는 점토들이다. 더보기1. 인스펙터 창normal, hard 점토 게임 오브젝트의 인스펙터 창의 모습은 easy 점토 게임 오브젝트의 모습과 다르지 않다.    Clay 스크립트의 Clay Data  요소의 값만 easy, normal, hard 점토가 다른 값을 가지도록 했다.    2. 게임 오브젝트기..
[개발일지] 32. 씬 전환시 데이터 저장&적용
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번에는 씬 전환시 데이터를 저장하고 적용하도록 했다.     1. 스크립트이번엔 새로 만든 스크립트는 없지만 대신에 많은 스크립트가 수정됐다. GameManager 와 DataManager 를 싱글톤으로 이용하고 있기 때문에 다른 스크립트에서 사용할 수 있는 장점을 갖는다. 하지만 이 때문에 GameManager 와 DataManager 둘 다 준비 되기 전까지 다른 스크립트에서는 이 둘을 사용하면 안 되는데 이를 관리하기 위해 코드를 수정했다..... 1.1 GameManager 스크립트using System;using System.Collections;using System.Collections.Generic;using Unity.VisualScripting;using UnityE..
[개발일지] 31. 야생 판넬 제작 & 체력바 애니메이션 적용 & 씬 이동
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번에는 게임 시작, 실패, 성공 판넬을 제작했고 씬을 이동할 수 있도록 버튼에 기능을 추가했다.    1. 게임 오브젝트일단 메인씬과 야생씬 둘 다 게임 오브젝트를 추가했다. 1.1 TempWorldButton야생 씬으로 이동하기 위해 임시로 만들어놓은 게임 오브젝트이다. 다음에 수정할 예정이다. 1.2 GameStartPanel야생 게임 시작 버튼이다. 이 버튼을 누르기 전까지는 게임이 시작되지 않도록 했다. 1.3 GameOverPanel플레이어가 죽으면 뜨는 판넬이다. 집으로 돌아가는 버튼을 누르면 메인 씬으로 넘어가도록 했다. 1.4 GameClearPanel목표 시간에 도달할 때까지 플레이어가 죽지 않았다면 뜨는 판넬이다. 버튼을 누르면 메인 씬으로 돌아가도록 했다. 게임에 ..
[개발일지] 30. 야생 난이도에 따른 맵 생성 & 배경 설정
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번엔 야생 난이도에 따라 생성되는 맵이 달라지도록 만들었다. 맵을 easy, normal, hard 버전으로 만든다음 야생 난이도에 맞는 맵만 생성하도록 했다. normal 과 hard 버전 맵은 코드가 잘 작동하는지 확인하기 이해 임시로 만들어서 1개씩밖에 없다. 그리고 야생 난이도에 맞게 배경을 활성화하도록 했다. 일단 하이어라키 창 속 세 개의 배경 게임 오브젝트 활성화를 모두 꺼놓아야 한다.    1. 게임 오브젝트하이어라키 창에 새로 생성한 게임 오브젝트는 없고 기존의 MapSpawner 게임 오브젝트를 수정했다. 그리고 세 개의 배경 게임 오브젝트 활성화를 꺼놓았다. 1.1 MapSpawner더보기1. 인스펙터 창맵스포너의 인스펙터 모습은 다음과 같다.  EasyMapPre..
[개발일지] 29. 맵 프리팹 수정 & 스크립트 수정
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번에는 맵 프리팹과 스크립트를 수정했다. 기존 맵 프리팹은 그냥 맵에 압정의 위치가 한 곳에만 있고 변경되지 않았다. 이번에는 맵에 압정 3개를 놓은 후, 랜덤한 확률로 압정을 활성화 여부를 결정해서 압정이 다양한 곳에 생성되는 것처럼 보이도록 했다. 압정이 활성화 될 확률은 쉬움, 보통, 어려움 단계에 맞게 설정해야 했는데 이를 위해 Random.Range 를 이용했다.    1. 맵 프리팹일단 쉬움 단계의 맵의 종류로는 4개를 만들어놨는데 더 추가할 예정이다. 일단 맵은 압정이 있는 경우, 몬스터가 있는 경우, 아무것도 없는 경우로 나뉜다. 더보기1. 인스펙터 창모든 맵의 인스펙터 창 컴포넌트 상태는 다음과 같다. 맵 마다 다른 부분이 있다면 Map Controller 스크립트이다..
[개발일지] 28. 맵 이동 & 생성
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번엔 프리팹으로 만든 맵을 일정 시간마다 게임에 생성하도록 했다. 그리고 기존에 만들어놨던 ScrollingBackground 스크립트를 부착해서 맵이 이동하도록 했다.    1. 프리팹일단 맵 프리팹을 4개 만들어놨다. 지금은 원하는 기능을 구현하기 위해 맵을 대충 만들었는데 다음에 맵 종류도 더 늘릴 것이다. 일단 Grid 에 4개의 프리팹을 놓으면 아래 사진처럼 보인다. 맵에 장애물과, 몬스터가 있는 경우가 있는데 이는 맵의 자식으로 넣어놓은 것이다. 더보기1. 인스펙터 창맵의 인스펙터 창의 상태는 다음 사진과 같다. Scrolling Background 스크립트를 부착해서 맵이 이동할 수 있도록 했다.    2. 게임 오브젝트이번에 새로 만든 게임 오브젝트는 MapSpawner..
[개발일지] 27. 플레이어 & 장애물 상호작용
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번엔 플레이어와 장애물이 상호작용 하는 기능을 구현했다.    1. 프리팹이번에 새로 만든 프리팹은 장애물(뾰족한 삼각형) 이다. 이렇게 만든 프리팹은 나중에 맵 프리팹을 만들 때 이용할 것이다. 1.1 Spike더보기1. 인스펙터 창게임 오브젝트의 Tag 와 Layer 를 Attack 으로 설정해줬다. 나중에 스크립트로 해당 게임 오브젝트가 무엇인지 판단할 때 이용하기 위함이다. 1.2 Monster더보기1. 인스펙터 창현재 몬스터 게임 오브젝트의 인스펙터 창은 다음과 같다. 새로 추가된 컴포넌트는 Audio Source 인데 몬스터가 플레이어한테 밟혀 죽는 상황에서 소리를 내게 할 것이기 때문이다.    2. 스크립트이번에 새로 만든 스크립트는 없고 Monster 와 Player ..
[개발일지] 26. 몬스터 기초 제작
·
유니티 프로젝트/점토게임
0. 들어가기 전에이번엔 몬스터가 알아서 맵을 돌아다니도록 했다.     1. 게임 오브젝트일단 하이어라키 창에 몬스터 게임 오브젝트를 만들었다. 다음에 이 몬스터를 프리팹으로 만들어서 사용할 것이다. 1.1 Monster몬스터 게임 오브젝트의 정보는 다음과 같다.더보기1. Monster 스크립트직접 만든 스크립트이다. 몬스터의 움직임을 관리하기 위해 만들었다. 2. Rigidbody 2D몬스터 게임 오브젝트가 물리 작용을 받도록 하기 위해 부착한 컴포넌트이다. 3. Circle Collider 2D몬스터 게임 오브젝트가 다른 물체와 충돌한 것을 감지하기 위해 부착한 컴포넌트이다. 4. Animator몬스터의 애니메이션을 관리하기 위해 부착한 컴포넌트이다.    2. 애니메이션&애니메이터이번에 새로 만든..