Unity Chapter 4-1. 소코반 게임 만들기 : 초기 씬 구성

Date:     Updated:

카테고리:

태그:

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!


Chapter 4. 소코반 게임 만들기 : 초기 씬 구성

  • 씬을 새로 만들면 오브젝트가 기본으로 있는 main cameradirectional light밖에 없는 상태.


맵 바닥에 색깔 입히기

  1. 맵 바닥을 만들어 주자
    • Hierarchy 창에서 create - 3D object - plane
    • 만들어진 plane 오브젝트를 더블 클릭하여 씬 카메라가 plane 오브젝트를 비추게 하자.
  2. 바닥에 색깔이 되어 줄 Material을 만든다.
    • Project 창의 /Assets 폴더에 마우스 우클 - create - Material 을 하여 Material을 만들어 준다. 이름은 Plane이라고 해주자.
    • Material
      • 마치 물감같은 것.
      • 오브젝트에 붙여주면 오브젝트의 표면의 색을 결정해준다.
      • 쉐이더(빛에 의한 표면)텍스처(그림 파일)가 합쳐진 것.
    • Inspector 창에서 방금 만든 Plane 이름의 Material 색상을 바꿔준다.
      • 색은 Albedo 속성에서 바꿈.
      • smoothness 속성은 표면의 반들 반들 정도
  3. 만든 Material을 드래그 해서 오브젝트에 드롭해주면 색이 입혀진다.


플레이어가 될 ‘구’ 만들기

  1. ‘구’ 오브젝트 생성
    • Hierarchy 창에서 create - 3D object - sphere
    • 이름은 Player로 바꿔주자.
    • 이름은 Inspector 창에서도 바꿀 수 있다.
  2. ‘구’가 ‘plane’에 절반 묻혀있는 이유
    • 구 오브젝트의 좌표 기준이 구의 중앙에 있기 때문에.
  3. plsne 오브젝트의 transform 컴포넌트에서 y.position을 -0.5로 설정해준다. 바닥을 좀 내려서 반쯤 묻혀있는 구를 보이게 해주자.


오브젝트에 물리 기능 넣기 : Rigidbody

  • 플레이 버튼을 누르면 중력에 의해 오브젝트가 떨어지게 만드려면 Rigidbody 컴포넌트를 붙여주면 된다.
  • Add Component에서 Rigidbody를 검색
  • 이 컴포넌트가 붙어있는 것만으로도 오브젝트에 물리 기능이 추가되는 셈이다.


Collider 컴포넌트

  • 오브젝트를 생성하면 기본으로 붙어있는 디폴트 컴포넌트다.
  • 구 오브젝트에 Rigidbody를 붙여주고 플레이를 누르면 중력을 받아 밑으로 떨어지면서 Plane에 부딪쳐 더 이상 떨어지지 않고 Plane에 붙어있게 되는데 이는 Collider 컴포넌트 때문이다
  • 물리적으로 오브젝트끼리 충돌이 일어났을 때를 감지하고 이를 처리하는 컴포넌트다.


플레이어를 위한 C# 스크립트 작성하기

  • 구 오브젝트가 어떤 동작을 하게 할 컴포넌트(스크립트)를 작성해보자.
    • /assets에 create - c# script
    • script 파일의 이름은 반드시 **대문자**로 시작하여야 한다.
      • 클래스는 무조건 대문자로 시작하자고 프로그래머들끼리 한 약속임
      • 변수나 함수는 소문자로 시작하기
  1. 스크립트 작성 후 적용할 오브젝트에 붙여준다.
  2. 오브젝트에 실존하여 붙어있는 컴포넌트를 해당 변수 슬롯에 드래그해 붙여준다.
    • 단 스크립트 내에 실존하는 컴포넌트를 참조할 변수가 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
    • 수학과 관련된 함수들 제공


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기