본문 바로가기

스네이크 게임 제작

스네이크 게임 - 빌드 및 오브젝트 앵커 변경 아래 링크의 영상을 참고하여 안드로이드 플랫폼으로 빌드를 해보았다. https://www.youtube.com/watch?v=IJxc-ANxO-w 하지만 기존에 제작한 대로 Build를 해보니 게임 화면에서 버튼들이 짤리는 현상이 발생했다. 기존에는 동시에 숨기거나 보이게 하는 버튼들을 빈 오브젝트에 묶어서 정리하였는데 이 방식으로는 문제가 생기기에 묶지 않는 방식을 택하였더니 해결되었다. GameEnd 오브젝트 같은 경우는 화면 가운데에 뜨는 것이라 아무런 문제가 없기에 수정하지 않았다. "일시정지" 버튼과 좌우에 있는 이동키들은 앵커를 사용하여 각각 좌측 상단, 좌측 하단, 우측 하단에 고정한 뒤 일정 간격을 두도록 설정하였다. using System.Collections; using System.C.. 더보기
스네이크 게임 - 해상도 변경 아래 영상을 참고하여 기존의 PC 플랫폼으로 제작하던 게임을 안드로이드 플랫폼으로 변경하여 해상도 수정 작업을 진행하였다. (해상도 : 1920x1080) https;//www.youtube.com/watch?v=uQZFawccnNg&t=31s 궁금하신 점은 밑에 댓글 바랍니다 더보기
스네이크 게임 - 게임 클리어 판정 스네이크가 음식을 먹어서 얻은 점수의 총합이 일정 수치를 넘으면 게임 클리어 판정이 되도록 코드를 추가하였다. 게임 클리어가 되었을 경우, 게임 오버와 마찬가지로 게임을 재시작하거나 메인 메뉴로 돌아갈 수 있도록 구성하였다. 이전에 제작한 게임 오버 오브젝트에서 텍스트만 수정하는 방식으로 진행하였다. (+게임 클리어 또는 오버 상태에서 "일시정지" 버튼이 클릭되는 현상이 발생하여 수정함) 추가적으로 조금 더 체계적인 게임 시스템을 위하여 "Snake" 스크립트에서 점수를 계산하던 것을 "GameManager" 스크립트에서 수행하도록 변경함으로써 "Snake" 스크립트는 스네이크 관련 모션을, "GameManager" 스크립트는 전반적인 게임 관리를 담당하도록 해주었다. using System.Collec.. 더보기
스네이크 게임 - 게임 오버 판정 스네이크 머리가 벽에 닿이거나 꼬리에 닿인 경우, 게임 오버 판정이 되도록 코드를 추가하였다. 게임 오버가 되었을 경우, 게임을 재시작하거나 메인 메뉴로 돌아갈 수 있도록 구성하였고 그에 대한 코드를 GameManager에 작성하여 관리하였다. "재시도" 버튼을 클릭하면 게임이 초기화된 상태로 다시 시작하고 "메인으로" 버튼을 클릭하면 메인 화면으로 이동한다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { // for Setting p.. 더보기
스네이크 게임 - 메인 메뉴와 일시 정지 메인 메뉴 화면을 새로 만들어서 게임 시작 버튼을 클릭하였을 때 게임 화면으로 넘어가는 시스템을 추가하였다. 메인 메뉴에 사용되는 버튼들 추가 방법은 유튜버 "골드메탈"님의 영상을 참고하였다. https://www.youtube.com/watch?v=qXa7y1Que6s&t=810s 또한 게임 화면에 일시정지 버튼을 추가하여 게임을 하는 도중에 일시정지를 할 수 있도록 해주었다. "시작하기" 버튼을 클릭하면 게임 실행 화면으로 "설정" 버튼을 클릭하면 아래 화면으로 이동한다. 설정 항목들은 아직 추가하지 않은 상태이고 "뒤로가기" 버튼을 누르면 위 화면으로 되돌아간다. "일시정지" 버튼을 클릭하면 음식 생성과 스네이크의 이동이 정지하고 "다시시작" 버튼을 클릭하면 다시 게임이 진행된다. using Sys.. 더보기
스네이크 게임 - 점수 카운트 스네이크가 음식을 먹었을 때 점수를 카운트하고 점수를 화면에 띄우는 코드와 설정은 유튜버 "골드메탈"님의 영상을 참고하였다. https://www.youtube.com/watch?v=qXa7y1Que6s&t=810s 추가적으로 기존에 음식 종류가 하나이었던 것을 총 3종류로 만들고 각자 다른 점수를 배부하는 추가 작업을 진행하였다. 이 역시 유튜버 "골드메탈"님의 영상을 참고하였다. https://www.youtube.com/watch?v=lKFka1regy8&t=601s using System.Collections; using System.Collections.Generic; using UnityEngine; public class Food : MonoBehaviour { // Point Var pub.. 더보기
스네이크 게임 - 스네이크 길이 증가 스네이크 이미지와 기본적인 코드는 아래 링크를 참고하여 작성하였다. https://noobtuts.com/unity/2d-snake-game 위 링크에 있는 코드를 토대로 작성하였더니 스네이크 머리가 음식과 만나더라도 스네이크 길이가 증가하지 않는 문제가 발생하였다. 이는 약간의 구글링과 개인적인 코드 분석을 통해 해결하였다. 또한 스네이크가 벽에 닿았을 경우 반대 방향으로 돌아가는 코드와 스네이크가 현재 이동하는 방향의 반대 방향으로 입력이 들어올 경우 이동 방향이 바뀌지 않는 코드도 개인적으로 추가해보았다. using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; public clas.. 더보기
스네이크 게임 - 음식 랜덤 생성 음식 이미지와 기본적인 코드는 아래 링크를 참고하여 작성하였다. https://noobtuts.com/unity/2d-snake-game 위 링크에 있는 코드를 토대로 작성하였더니 시간이 지날수록 음식의 개수가 무작위로 생성되는 문제가 발생하였다. 이는 유튜버 "고박사의 유니티 노트"님의 영상을 참고하여 Instantiate() 함수를 이해하고 Object 추가 작업을 함으로써 해결하였다. https://www.youtube.com/watch?v=IlQ1vLT2tPA&t=145s using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnFood : MonoBehaviour { // Food.. 더보기