728x90
반응형

유니티 45

유니런(1) - 플레이어 제작

캐릭터가 시작할 때 밟을 발판부터 만듭니다. 프로젝트의 스프라이트에서 미리 제작된 발판 이미지를 하이어라키창으로 드래그 드롭합니다. 위치를 조정하고 박스 콜라이더 2D 컴포넌트를 추가합니다. 달리기 게임이니 캐릭터가 닿으면 낙사판정을 내려줄 오브젝트를 추가합니다. 마찬가지로 위치를 지정하고 박스 콜라이더 2D 컴포넌트를 추가합니다. 그리고 낙사판정을 내려줄 영역이기 때문에 오브젝트와 닿았을 때 감지는 하지만 충돌하지 않고 관통하도록 Is Trigger에 체크합니다. 캐릭터 스프라이트를 편집하려는데 스프라이트 에디터가 없다고 나옵니다. 유니티 상단의 window에서 package manager를 누르고 2D Sprite를 install해줍니다. Toko_Run 스프라이트를 잘라줍니다. 자른 스프라이트 하나..

닷지(5) - 게임 매니저와 UI

프로젝트탭에 Scripts, Materials, Prefabs 폴더를 만들어 정리해줍니다. 게임이 진행될때 전체 화면이 계속해서 회전되게 만들겠습니다. Rotator 스크립트를 작성합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rotator : MonoBehaviour { public float rotationSpeed = 60f; void Update() { transform.Rotate(0f, rotationSpeed*Time.deltaTime, 0f); } } 해당 스크립트를 Level에 드롭합니다. 원하는대로 회전하는걸 확인할 수 있습니다. UI 개체를 만들어줍니다. Re..

닷지(4) - 탄알 생성기 제작

원기둥 오브젝트를 생성하고 Bullet Spawner로 이름을 변경합니다. 위치는 (8, 1, 0)으로 설정해줍니다. 에셋의 Bullet Color 머터리얼을 씬 창의 원기둥 오브젝트로 드래그&드롭합니다. 탄알 생성기 스크립트를 작성합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class BulletSpawner : MonoBehaviour { public GameObject bulletPrefab; //생성할 탄알의 원본 프리팹 public float spawnRateMin = 0.5f; //최소 생성 주기 public float spawnRateMax = 3f; //최대 생성 주기 pr..

닷지(3) - 탄알 제작

지난 Player 제작에 이어서 탄알 게임 오브젝트를 생성합니다. 3D Object 중 Sphere를 생성한 뒤 Bullet으로 이름을 변경합니다. 위치를 (0, 5, 0), 스케일을 (0.5, 0.5, 0.5)로 변경합니다. Meterial을 생성한 뒤 Bullet Color로 이름을 변경합니다. 컬러는 (255, 0, 0)으로 설정한 뒤 Bullet 게임 오브젝트로 드래그&드롭합니다. Bullet 게임 오브젝트에 Rigidbody 컴포넌트를 추가합니다. 이후 중력에 영향을 받지 않도록 Use Gravity 체크를 해제합니다. 탄환이 플레이어와 접촉을 감지하고 사망처리는 해야 하지만 충돌로 인해 밀려남이나 이동에 영향을 주는 것은 원치 않으니 접촉을 감지만 할 수 있도록 Is Trigger를 체크합니다..

닷지(2) - 플레이어 스크립트 생성&입력감지

PlayerController이름으로 스크립트를 생성합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public Rigidbody playerRigidbody; //이동에 사용할 리지드바디 컴포넌트 public float speed = 8f; //이동 속력 void Start() { } void Update() { if (Input.GetKey(KeyCode.UpArrow) == true) { //위쪽 방향키 입력이 감지된 경우 z방향 힘 주기 playerRigidbody.AddForce(0f, 0f, speed); }..

닷지(1) - 씬 구성&카메라 설정&플레이어 제작

가장 기초적인 기능을 사용하여 탄막슈팅게임 Dodge를 만들어 보겠습니다. 유니티 버전은 2020.3.1f1을 사용합니다. 먼저 바닥을 설치합니다. 스케일은 (2,1,2)로 설정해줍니다. 바닥 색 지정을 위해 Plane Color이름으로 머티리얼을 생성합니다. 검은색으로 만들어줍니다. 머티리얼을 게임 오브젝트로 드래그&드롭하여 적용시킵니다. 벽으로 사용할 큐브를 생성합니다. 벽은 (0,0.5,0) 위치에 스케일은 (20,1,1)로 설정합니다. 벽의 위치를 (0,0.5,10)으로 변경하여 사이드로 보내줍니다. 벽의 이름이 Cube로 되어있었습니다. Wall로 수정한 뒤 복제합니다. 복제된 벽은 (0,0.5,-10)위치로 변경합니다. 같은 방법으로 두개의 벽을 더 생성해 테두리를 전부 막아줍니다. Level..

유니티 입문 - 기본 문법(5) 제어문(for문)

for문은 조건이 참인 동안 처리를 반복합니다. for문은 다음과 같은 구조를 가집니다. for (초기화; 조건; 갱신) { //for문 블록 //조건이 참인 동안 이곳에 있는 코드를 반복 실행 } for문을 사용하려면 다음 세 가지 요소가 필요합니다. 초기화 : 주로 순번(index)이 될 변수를 선언하고 초깃값을 정합니다. 조건 : 어떤 조건에서 처리를 계속 반복할지 정합니다. 갱신 : 한 회의 처리가 끝나면 순번을 어떻게 갱신할지 정합니다. 그러면 for문 예제를 살펴보겠습니다. i를 0부터 시작해서 10보다 작은 수가 될 때까지 i를 1씩 증가시키게 됩니다. 그러니 총 10회 Debug.Log(i + "번째 순번입니다.");를 반복 실행하게 됩니다. 의도한 대로 유니티에서 실행됨을 확인할 수 있습..

유니티/기초 2021.06.07

유니티 입문 - 기본 문법(4) 제어문(if문)

기본적으로 코드는 위에서 아래로 실행하지만 제어문을 사용하면 조건에 따라 특정 코드의 실행 여부나 실행 순서를 변경할 수 있습니다. 제어문에는 분기를 결정하는 조건문(if문)과 수행을 여러 번 반복하는 반복문(for문, while문)이 있습니다. 게임에서 특정 조건을 만족하면 숨겨진 엔딩이 나오는 등, 조건과 선택에 따라 분기가 나눠지는 경우가 많습니다. 이때 if문을 사용합니다. if문은 주어진 조건을 평가하고 조건의 결과가 true나 false 중 하나가 되는 변수나 표현식입니다. 평가한 조건이 true면 if문 아래 중괄호로 묶인 영역을 실행하고, false였다면 무시하고 넘어갑니다. 기본적인 if문 구조는 다음과 같습니다. if(조건) { //if 문 블록 //조건이 참이면 이곳에 있는 코드를 실..

유니티/기초 2021.06.07

유니티 입문 - 기본 문법(3) 매서드 연습하기

두 점 사이의 거리를 계산하는 메서드를 만들어보겠습니다. (x1, y1)과 (x2, y2) 이 두 점 사이의 거리인 distance를 구하는 방법을 알아보겠습니다. 평면상에서 두 점 사이의 거리를 구하는데는 피타고라스 정의가 이용됩니다. 이 두 점을 꼭짓점으로 하는 직각삼각형에서 변의 길이들은 다음과 같습니다. 밑변 : width = x2 - x1 높이 : height = y2 - y1 빗변(거리) : distance = √(width^2 + height^2) = √((x2 - x1)^2 + (y2 - y1)^2)) 여기서 삼각형의 빗변이 두 점 사이의 거리가 되니, 이를 코드로 작성해보겠습니다. float distance = width * width + height * height; 여기선 일단 dis..

유니티/기초 2021.06.07
728x90
반응형