Unity Chapter 4-1. 소코반 게임 만들기 : 초기 씬 구성
카테고리: Unity Lesson 1
태그: Unity Game Engine
인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!
Chapter 4. 소코반 게임 만들기 : 초기 씬 구성
- 씬을 새로 만들면 오브젝트가 기본으로 있는
main camera
와directional light
밖에 없는 상태.
맵 바닥에 색깔 입히기
- 맵 바닥을 만들어 주자
- Hierarchy 창에서 create - 3D object - plane
- 만들어진 plane 오브젝트를 더블 클릭하여 씬 카메라가 plane 오브젝트를 비추게 하자.
- 바닥에 색깔이 되어 줄
Material
을 만든다.- Project 창의
/Assets
폴더에 마우스 우클 - create - Material 을 하여 Material을 만들어 준다. 이름은 Plane이라고 해주자.
Material
- 마치 물감같은 것.
- 오브젝트에 붙여주면 오브젝트의 표면의 색을 결정해준다.
- 쉐이더(빛에 의한 표면)랑 텍스처(그림 파일)가 합쳐진 것.
- Inspector 창에서 방금 만든 Plane 이름의 Material 색상을 바꿔준다.
- 색은 Albedo 속성에서 바꿈.
- smoothness 속성은 표면의 반들 반들 정도
- Project 창의
- 만든 Material을 드래그 해서 오브젝트에 드롭해주면 색이 입혀진다.
플레이어가 될 ‘구’ 만들기
- ‘구’ 오브젝트 생성
- Hierarchy 창에서 create - 3D object - sphere
- 이름은 Player로 바꿔주자.
- 이름은 Inspector 창에서도 바꿀 수 있다.
- ‘구’가 ‘plane’에 절반 묻혀있는 이유
- 구 오브젝트의 좌표 기준이 구의 중앙에 있기 때문에.
- plsne 오브젝트의 transform 컴포넌트에서 y.position을 -0.5로 설정해준다. 바닥을 좀 내려서 반쯤 묻혀있는 구를 보이게 해주자.
오브젝트에 물리 기능 넣기 : Rigidbody
- 플레이 버튼을 누르면 중력에 의해 오브젝트가 떨어지게 만드려면 Rigidbody 컴포넌트를 붙여주면 된다.
- Add Component에서 Rigidbody를 검색
- 이 컴포넌트가 붙어있는 것만으로도 오브젝트에 물리 기능이 추가되는 셈이다.
Collider 컴포넌트
- 오브젝트를 생성하면 기본으로 붙어있는 디폴트 컴포넌트다.
- 구 오브젝트에 Rigidbody를 붙여주고 플레이를 누르면 중력을 받아 밑으로 떨어지면서 Plane에 부딪쳐 더 이상 떨어지지 않고 Plane에 붙어있게 되는데 이는 Collider 컴포넌트 때문이다
- 물리적으로 오브젝트끼리 충돌이 일어났을 때를 감지하고 이를 처리하는 컴포넌트다.
플레이어를 위한 C# 스크립트 작성하기
- 구 오브젝트가 어떤 동작을 하게 할 컴포넌트(스크립트)를 작성해보자.
/assets
에 create - c# script- script 파일의 이름은 반드시 **대문자**로 시작하여야 한다.
- 클래스는 무조건 대문자로 시작하자고 프로그래머들끼리 한 약속임
- 변수나 함수는 소문자로 시작하기
- 스크립트 작성 후 적용할 오브젝트에 붙여준다.
- 오브젝트에 실존하여 붙어있는 컴포넌트를 해당 변수 슬롯에 드래그해 붙여준다.
- 단 스크립트 내에 실존하는 컴포넌트를 참조할 변수가
public
이어야 함.
- public이 아닌 변수들 은 유니티 인터페이스에서 슬롯이 열리지 않는다. 안 보임.
- public인 변수들 은 유니티 인터페이스 안에서도 슬롯을 통해 값을 수정할 수 있다.
- 단 스크립트 내에 실존하는 컴포넌트를 참조할 변수가
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed = 10f;
public Rigidbody playerRigidbody;
// Start is called before the first frame update
void Start()
{
playerRigidbody.AddForce(0, 10, 0); // 게임이 시작되면 (Start()) y방향으로 10 만큼의 힘을 준다. 플레이어 오브젝트가 하늘로 승천할 것..
}
// Update is called once per frame
void Update()
{
}
}
public Rigidbody playerRigidbody;
- 추상적인 전체 Rigidbody 컴포넌트가 아닌 진짜 구 오브젝트에 현재 붙어있는 Rigidbody 컴포넌트를 가리킴
- 슬롯을 통해 실존하는 현재 붙어있는 컴포넌트를 여기 드롭해줄 것이다.
- public으로 선언해야 유니티에서 드래그 앤 드롭을 할 수 있다.
정리
이 챕터에서 새로 알게된 컴포넌트들 정리
- Transform
- 오브젝트를 생성하면 기본으로 붙어있는 디폴트 컴포넌트다.
- 오브젝트의
position
,rotation
,scale
즉 위치, 회전, 크기를 담당한다. - 톱니 바퀴 버튼을 누른 후 Reset을 누르면 오브젝트 위치가 원점으로 돌아간다.
- Collider 컴포넌트
- 오브젝트를 생성하면 기본으로 붙어있는 디폴트 컴포넌트다.
- 구 오브젝트에 Rigidbody를 붙여주고 플레이를 누르면 중력을 받아 밑으로 떨어지면서 Plane에 부딪쳐 더 이상 떨어지지 않는데 이는 Collider 컴포넌트 때문이다
- 물리적으로 오브젝트끼리 충돌이 일어났을 때를 감지하고 이를 처리하는 컴포넌트다.
이 챕터에서 새로 알게된 Unity Engine제공 집합
- Mathf
- 수학과 관련된 함수들 제공
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기