Unity 19

5-7 유니티로 화살 피하기 게임 만들기(심화3)

우여 곡절 끝에, 많은 버그를 만나고, 코드를 어떻게 구성할지 고민하다가. 씬 전환 시 데이터값을 어떻게 넘기는가에 대한 고민을 하게 되었다. GameScene에서 점수를 획득했는데 이것을 어떻게 다른 씬에서 이용할 수 있을까? 오브젝트를 남기는 것이 아닌, 값만 남기면 되는데 어떻게 할 수 있을까? 씬 전환 시에 오브젝트를 어떻게 유지할 것인가? 위와 같은 고민을 하게 되었고, DontDestroyOnload(Gameobject) 를 보고... 헷갈리기 시작했다.. 별첨 1. 화면 겹침 해결 더보기 분명히 간단히 해결해서 글쓰겠지 하셨겠지만.. (4시간 삽질했습니다.. 구글링 해도 안나오고.. 코드로 오브젝트 구분하고.. 늅늅에겐 너무 힘든 과정) 대체 이거 설명해둔데가 없어.. 독학은.. 어디서 배워..

3.4 룰렛 스크립트 작성하기

3.4.1 스크립트의 역할 클릭하면 룰렛을 회전시키되 시간이 흐르면 룰렛의 회전 속도를 점점 줄여서 멈추도록 하는 구조로 작성 룰렛을 회전시키는 를 작성 클릭하면 일정한 속도로 회전한다는 스크립트 3.4.2 룰렛 스크립트 작성하기 ※ 클릭하면 일정 속도로 회전하는 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RouletteController : MonoBehaviour { float rotSpeed = 0; void Start() { // 프레임레이트를 60으로 고정한다. Application.targetFrameRate = 60; } // Update is called onc..

3.3 씬에 오브젝트 배치하기

3.3.1 룰렛 배치하기 Project 창에 추가해둔 리소스를 드래그&드롭으로 Scene 뷰에 배치시킨다. 오브젝트 위치 조절 Inspector 창의 좌표를 지정해서 오브젝트를 옮길 수 있다. 좌표를 특정 위치에 맞추고 싶다면 inspector 창을 쓰는게 편리하다. X, Y 좌표 값을 0으로 배치하면 화면 중앙에 배치할 수 있다. 3.3.2 바늘 배치하기 3.3.3 배경색 변경하기 위에서 배경색이 파랑색이라 불편하다. 배경색은 카메라 오브젝트의 매개변수를 수정해서 변경하면 된다. Main Camera -> Inspector -> Camera 항목의 BackGround 에서 값을 변경한다. 필자는 연한 파랑색이 좋아서 다음과 같이 변경했다.

3.2 프로젝트와 씬 만들기

앞서 교재에서 파일을 가져와서 가져온 파일을 Project - Asset 폴더에 넣어준다. 3.2.2 스마트폰용으로 설정하기 빌드 설정 스마트폰용으로 빌드할 수 있도록 설정 File -> Build Settings (단축키 : ctrl + shift + B ) 안드로이드 용으로 해도 되는데, 필자는 아이폰이다.. ㅜ Switch Platform 을 눌러서 각 스마트폰용 프로젝트로 빌드한다. 화면 크기 설정 게임 화면 크기를 설정할 수 있다. 아이폰13 pro를 쓰기 때문에 1170 x 2532 픽셀 디스플레이로 설정할 계획이다.

카테고리 없음 2023.09.09

3장 오브젝트를 배치하고 움직이는 방법

3.1 게임 설계하기 사용자의 입력에 따라 움직이게 할 것 1단계 : 화면에 놓일 오브젝트를 모두 나열 2단계 : 오브젝트를 움직일 수 있는 컨트롤러 스크립트를 정하기 3단계 : 오브젝트를 자동으로 생성할 수 있도록 제너레이트 스크립트 정하기 4단계 : UI를 갱신 할 수 있도록 감독 스크립트 준비 5단계 : 스크립트를 만드는 흐름을 생각 1단계 화면에 놓일 오브젝트를 미리 구상하기 2단계 나열한 오브젝트 중에서 움직일 오브젝트만 따로 확인하기 움직이는 오브젝트에는 해당 오브젝트만의 스크립트가 필요 => 컨트롤러 스크립트 3단계 게임을 플레이 할 때 생성될 오브젝트를 찾음 플레이어가 이동하거나 시간이 경과하면 출현하는 오브젝트가 해당됨 오브젝트를 생성하는 스크립트 => 제너레이트 스크립트 4단계 게임의 ..

2.9 Vector 클래스 사용하기

2.9.1 Vector 3D 게임을 만들려면 오브젝트의 위치를 정해야 하기 때문에 float형의 x, y, z 값 3개를 쓴다. C#에는 Vector3 class(구조체)가 있다. 2D 게임에는 Vector2 class가 있다 (float형의 x, y값) 위 값 둘다 좌표나 벡터로 쓸 수 있다. 2.9.2 Vector 클래스를 사용하는 방법 ※ Vector2 class의 멤버 변수에 숫자 더하기 using System.Collections; using System.Collections.Generic; using UnityEngine; // 유니티가 동작하는데 필요한 기능 제공 public class test : MonoBehaviour { // Start is called before the first ..

2.8 클래스 만들기

2.8.1 클래스 클래스를 사용하면 관계가 있는 변수와 메서드를 하나로 합칠 수 있어서 프로젝트를 관리하기 쉽다. class 클래스명 { 멤버 변수 선언; 멤버 메서드 구현; } 작성한 클래스는 int나 string 등 데이터형으로 사용할 수 있다. 유니티에서 제공하는 클래스도 있다. 2.8.2 클래스 작성하기 ※ Player 클래스 구현하기 using System.Collections; using System.Collections.Generic; using UnityEngine; // 유니티가 동작하는데 필요한 기능 제공 using UnityEngine.UIElements; public class Player { private int hp = 100; private int power = 50; publ..

2.7 메서드 만들기

※ 지금까지는 Start() 메서드 안에 모든 처리를 작성했지만, 모아둔 처리마다 이름을 붙여서 재사용 할 수 있게 할 것이다. 2.7.1 메서드 메서드(method) : 의미가 있는 처리 블록으로 분해하고 이름을 붙이는 구조에서 각 처리를 메서드라고 한다 인수 : 메서드(method)로 건네는 값 반환값 : 메서드(method)에서 돌려받는 값 인수는 여러개 건넬 수 있지만, 반환값은 1개만 받을 수 있다. 이 반환값을 여러개로 받고 싶다면 배열로 받아서 값을 처리하면 된다. 2.7.2 메서드를 만드는 방법 ※ Add() 메서드의 예시 using System.Collections; using System.Collections.Generic; using UnityEngine; // 유니티가 동작하는데 필..

2.6 배열 사용하기

2.6.1 배열 선언과 규칙 ※ 배열을 사용하는 예 여러가지 값(게임 순위, 점수) 등을 한꺼번에 다루어야 하는 경우 변수 상자를 가로로 이어붙인 길고 얇은 상자와 비슷 배열 준비 // 배열 선언 int[] points; // 배열 초기화 int[] points = new int[5]; int형 상자 5개를 만든다 배열의 인덱스는 points[0], points[1], points[2], points[3], points[4] 로 총 5개다. 배열 값 이용 points[2] = 3; 배열은 0번부터 세기 때문에 [null, null, 3, null, null] 의 형태로 들어간다. 2.6.2 배열을 사용하는 방법 ※ 배열 사용하기 using System.Collections; using System.Col..

2.5.5 for 문으로 반복하기

2.5.5 for문으로 반복하기 반복 횟수를 지정하면 자동으로 반복 횟수만큼 처리를 반복하는 for문을 사용 for (반복 횟수) { 처리 } for (변수 초기화; 반복 조건식; 변수 갱신) { 처리 } ① i 변수를 0으로 초기화 ② 반복 조건(i < 5)을 만족하면 ③, 만족하지 않으면 반복문을 종료 ③ Console 창에 i 값을 출력 ④ i를 증가시킴 (i 값을 1 증가) ⑤ ②로 돌아감 ※ for 문 사용하기 using System.Collections; using System.Collections.Generic; using UnityEngine; // 유니티가 동작하는데 필요한 기능 제공 public class test : MonoBehaviour { // Start is called bef..