유니티 21

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

이전 단계에서 화살에 맞으면 HP가 닳는 것 까지 구현을 했는데, 에셋 스토어에서 무료 에셋을 다운로드하고, 게임에 추가하는 과정을 추가할 예정이다. 나의 경우 HP up 에 사용될 하트를 구하기 위해서 픽셀로 된 무료 에셋을 찾았다. 보기 더보기 https://assetstore.unity.com/packages/2d/gui/icons/2d-pixel-item-asset-pack-99645 내 에셋에 추가한 다음 별첨 1. 하트 에셋을 추가하고 하트를 먹으면 hp가 차는 것 구현하기 어떻게 해야 할지 감이 안온다면, 이전 글을 다시 읽어보기 바랍니다. GameDirector에 IncreaseHP() 메서드를 생성해서 하트를 먹으면 HPGauge의 fillAmount의 값을 증가하게끔 구현 게임이 너무 ..

5-4 유니티로 화살 피하기 게임 만들기

5.8 UI 표시하기 5.8.1 UI를 표시하고 갱신하는 감독 만들기 UI 부품을 Scene 뷰에 배치한다 UI를 갱신하는 감독 스크립트를 작성한다. 빈 오브젝트를 만들고 작성한 스크립트를 적용한다. 5.8.2 HP 게이지 배치하기 ※ 앵커 포인트 설정 화면의 크기가 바뀌어도 화면 오른쪽 위에 HP게이지가 표시되도록 앵커 포인트를 변경 앵커 포인트 : 화면 크기가 바뀔 때 어디를 원점으로 해서 UI 부품 좌표를 다시 계산하는가? 앵커 포인트를 적절히 설정하면 실행하는 기기의 화면 크기에 의존하지 않는 UI를 만들 수 있음 ※ HP 게이지 줄여 나가기 HP 게이지를 줄이려면 UI 오브젝트의 Image에서 제공하는 Fill 기능을 사용한다. Fill Amount 변수 값을 바꾸면 이미지 표시 영역을 줄이거나..

5-2 유니티로 화살 피하기 게임 만들기

5.4 키를 조작해 플레이어 움직이기 5.4.1 플레이어 스크립트 작성하기 PlayerController using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { // Start is called before the first frame update void Start() { Application.targetFrameRate = 60; } // Update is called once per frame void Update() { // 왼쪽 화살표가 눌린 경우 if (Input.GetKeyDown(KeyCode.LeftArrow)) { t..

5-1 유니티로 화살 피하기 게임 만들기

5.1.1 게임 기획하기 플레이어를 움직여 떨어지는 화살을 피하는 게임 플레이어 떨어지는 오브젝트 이동하는 동작 버튼 5.1.2 게임 리소스 생각하기 1단계 : 화면에 놓일 오브젝트를 모두 나열 2단계 : 오브젝트를 움직일 수 있는 컨트롤러 스크립트 정하기 3단계 : 오브젝트를 자동으로 생성할 수 있도록 제너레이터 스크립스 정하기 4단계 : UI를 갱신할 수 있도록 감독 스크립트를 준비 5단계 : 스크립트를 만드는 흐름을 생각 ※ 움직이는 오브젝트 고르기 필요한 컨트롤러 스크립트 플레이어 컨트롤러 화살 컨트롤러 필요한 제네레이터 스크립트 화살 제너레이터 필요한 감독 스크립트 UI를 갱신 할 수 있는 감독 스크립트 구성 순서 컨트롤러 스크립트 -> 제너레이터 스크립트 -> 감독스크립트 각 게임 오브젝트는 ..

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장 오브젝트를 배치하고 움직이는 방법

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; // 유니티가 동작하는데 필..