[Unity Tutorial Roll-a-ball 08] Building the Game

1. 씬 저장하기

File -> Save Scenes (단축키 : Ctrl + S)

2. 게임 빌드하기

File -> Build Settings -> PC 선택 -> Add Open Scenes

3. 윈도우용 게임 실행 파일 생성

Builds 폴더 생성 -> Roll a Ball(Win) 이름으로 저장

4. 게임 실행

Roll a Ball(Win) 게임 파일 실행하기

Screen 에서 원하는 해상도 선택 -> Play!

게임 종료 : Alt + F4

 

-Reference

[Building the Game] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/building-game?playlist=17141

[Unity Tutorial Roll-a-ball 06] Collecting the Pick Up Objects

1. 플레이어 컨트롤러 스크립트에 충돌 트리거 추가

 public class PlayerController : MonoBehaviour {

    // 에디터 안 Inspector에서 편집 가능한 속도 조정 변수 생성
    public float speed;
    // Rigidbody 형태의 변수 생성
    private Rigidbody rb;

    // 스크립트가 활성화된 첫 프레임에 호출
    void Start()
    {
        // 현재 오브젝트의 Rigidbody를 참조
        rb = GetComponent<Rigidbody>();
    }

    // 프레임을 렌더링 하기 전에 호출
    void Update()
    {

    }

    // 물리효과 계산을 수행하기 전에 호출
    void FixedUpdate()
    {
        // 키보드의 키로 컨트롤하는 수평 축의 입력 (left, right)
        float moveHorizontal = Input.GetAxis("Horizontal");
        // 키보드의 키로 컨트롤하는 수직 축의 입력 (up, down)
        float moveVertical = Input.GetAxis("Vertical");

        // 플레이어의 이동량을 선언 (x축, y축, z축)
        Vector3 movemnet = new Vector3(moveHorizontal, 0, moveVertical);
        // 플레이어의 Rigidbody에서 movement 값만큼 힘을 가해서 이동시킴
        rb.AddForce(movemnet * speed);
    }

    // 트리거 콜라이더를 처음 접촉할 때 호출
    void OnTriggerEnter(Collider other)
    {
        // 오브젝트의 태그 값 비교
        if ( other.gameObject.CompareTag("PickUp"))
        {
            // 오브젝트 비활성화
            other.gameObject.SetActive(false);
        }       
    }
}

2. PickUp 오브젝트에 PickUp 태그 달기

Prefabs PickUp -> Inspector -> Tag -> AddTag

Tags -> PickUp 태그 추가

PickUp -> Tag -> PickUp 선택

3. PickUp 오브젝트에 충돌 트리거 활성화

Prefabs PickUp -> Box Collider -> Is Trigger 체크 박스 활성화

4. PickUp 오브젝트에 물리 엔진 추가 (PickUp 오브젝트 애니메이션 최적화)

Prefabs PickUp -> Add Component -> Physics -> Rigidbody -> Is Kinematic 체크 박스 활성화

 

 

-Reference

[Collecting the Pick Up Objects] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/collecting-pick-objects?playlist=17141

[유니티 튜토리얼 예제 Roll-a-ball 05] Creating Collectable Objects

1. 수집 오브젝트 큐브 생성

Hierarchy -> Create -> 3D Object -> Cube -> PickUp으로 이름 변경

PickUp -> Inspector -> Transform -> Reset

2. 플레이어 오브젝트 Active 해제

 Player -> Inspector -> 체크박스 해제

3. PickUp 오브젝트의 모양과 크기 변경

PickUp -> Transofrom -> Position (0, 0.5, 0), Rotation (45, 45, 45), Scale (0.5, 0.5, 0.5) 로 수정

4. PickUp 오브젝트에 실시간 움직임 추가

PickUp -> Add Component -> New Script -> Rotator 스크립트 생성

PickUp -> Rotator 스크립트 수정 -> Scripts 폴더에 드로우 하여 넣기

public class Rotator : MonoBehaviour {
    // Update is called once per frame
    void Update ()
    {
        // transform의 Rotate 값을 시간에 비례하여 변경
     transform.Rotate (new Vector3 (15, 30, 45) * Time.deltaTime);
    }
}

5. PickUp 오브젝트를 Prefabs 로 생성

Project -> Create -> Folder 생성 -> Prefabs 으로 이름 변경

PickUp 오브젝트를 Prefabs 폴더로 드로우하여 넣기

6. PickUp 오브젝트 12개 생성

Hierarchy -> Create Empty -> PickUps 로 이름 변경 -> PickUp 오브젝트를 PickUps로 드로우해서 넣기

PickUp 선택 -> ctrl + D -> 12개 생성해서 Scene에 배치

7. 12개의 PickUp 오브젝트 색상 변경

Project->Materials 폴더 -> Create -> Materials -> PickUp으로 이름 변경 -> Inspector -> Albedo 색상 -> RGB (255, 255, 0)으로 수정

PickUp Material을 Prefabs PickUp에 드로우해서 색상 적용

 

 

 

- Reference

[Creating Collectable Objects] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/creating-collectable-objects?playlist=17141

[Unity Tutorial Roll-a-ball 04] Setting up the Play Area

1. 벽의 부모 게임 오브젝트 생성

GameObject -> Create Empty -> 오브젝트 이름 Walls 로 변경 -> Inspector -> 설정 (톱니 바퀴) -> Reset

2. 벽 큐브 생성

GameObject -> 3D Object -> Cube -> 오브젝트 이름 WestWall 로 변경 -> Inspector -> 설정 (톱니 바퀴) -> Reset -> Walls 오브젝트로 드래그 하여 넣기

3. 벽 큐브 3개 복사하기

WestWall 선택 -> Edit -> Duplicate (단축키 : ctrl + D) -> 각 오브젝트 이름 EastWall, NorthWall, SouthWall 로 변경

4. 벽 큐브 크기와 위치 변경하기

 

 WestWall

EastWall 

NorthWall 

SouthWall 

Position 

 -10, 0, 0

 10, 0, 0

 0, 0, 10

 0, 0, -10

Scale 

 0.5, 2, 20.5

 0.5, 2, 20.5

 20.5, 2, 0.5

 20.5, 2, 0.5

 

 

 

- Reference

[Setting up the Play Area] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/setting-play-area?playlist=17141

[Unity Tutorial Roll-a-ball 03] Camera Moving

1. 카메라의 높이와 각도 수치를 변경

Main Camera -> Inspector -> Transform -> Position Y : 10, Rotation X : 45 로 수정

2. 카메라 컨트롤러 스크립트 생성

Main Camera -> Add Component -> New Script -> CameraController 이름 수정 -> Create and Add

생성된 CameraController 스크립트를 Scripts 폴더에 드로그하여 넣는다.

3. 카메라 컨트롤러 스크립트 수정

Project -> CameraController 스크립트 선택 -> Inspector -> Open

public class CameraController : MonoBehaviour {

    // 플레이어 오브젝트
    public GameObject player;
    // 카메라와 플레이어의 거리 차이
    private Vector3 offset;

    // Use this for initialization
    void Start ()
    {
        // 카메라와 플레이어의 거리 차이를 offset으로 둔다.
        // 카메라 위치 - 플레이어 위치
        offset = transform.position - player.transform.position;
    }

    // 프레임을 렌더링 하기 전에 호출
    void Update()
    {

    }

    // 모든 아이템이 Update()에서 다 처리된 후에 호출
    void LateUpdate ()
    {
        // 카메라가 플레이어와 offset 거리를 유지하며 움직인다.
        transform.position = player.transform.position + offset;  
    }
}

 

Hierarchy -> Main Camera -> Inspector -> CameraController -> Player 버튼 -> Scene -> Player 선택

 

- Reference

[Unity Moving the Player] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/moving-camera?playlist=17141

[Unity Tutorial Roll-a-ball 02] Moving the Player

1. 플레이어 오브젝트에 물리 엔진 추가

Inspector -> Add Component -> Physisc -> Rigidbody

2. 플레이어 이동 컨트롤 스크립트 생성

Project -> Create -> Folder -> 폴더 Scripts로 이름 변경

Player 오브젝트 선택 -> Inspector -> Add Component -> New Script -> Name : PlayerController -> Create and Add

Project에 생성된 PlayerController 스크립터를 Scripts 폴더에 드래그하여 넣는다.

3. 플레이어 이동 컨트롤 스크립트 PlayerController 소스 코드 수정

Project -> PlayerController 선택 -> Inspector -> Open

 

public class PlayerController : MonoBehaviour {

    // 에디터 안 Inspector에서 편집 가능한 속도 조정 변수 생성
    public float speed;
    // Rigidbody 형태의 변수 생성
    private Rigidbody rb;

    // 스크립트가 활성화된 첫 프레임에 호출
    void Start()
    {
        // 현재 오브젝트의 Rigidbody를 참조
        rb = GetComponent<Rigidbody>();
    }

    // 프레임을 렌더링 하기 전에 호출
    void Update()
    {

    }

    // 물리효과 계산을 수행하기 전에 호출
    void FixedUpdate()
    {
        // 키보드의 키로 컨트롤하는 수평 축의 입력 (left, right)
        float moveHorizontal = Input.GetAxis("Horizontal");
        // 키보드의 키로 컨트롤하는 수직 축의 입력 (up, down)
        float moveVertical = Input.GetAxis("Vertical");

        // 플레이어의 이동량을 선언 (x축, y축, z축)
        Vector3 movemnet = new Vector3(moveHorizontal, 0, moveVertical);
        // 플레이어의 Rigidbody에서 movement 값만큼 힘을 가해서 이동시킴
        rb.AddForce(movemnet * speed);
    }

수정한 소스 코드를 저장 -> Player 선택 -> Inspector -> PlayerController (Script) -> Speed 값을 입력

4. 프로젝트 빌드 및 실행

상단의 중앙에 위치한 플레이 버튼을 클릭하여 프로젝트를 실행한다.

아래의 게임 화면에서 키보드 조작으로 공을 움직일 수 있다.

 플레이어 이동

 키보드 입력

 키보드 방향키

 앞 

 W

 S

왼쪽

 A

오른쪽

 D

 

 

- Reference

[Moving the Player] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/moving-player?playlist=17141

[Unity Input ] https://docs.unity3d.com/ScriptReference/Input.html

[Unity Input GetAxis ] https://docs.unity3d.com/ScriptReference/Input.GetAxis.html

[Unity Rigidbody ] https://docs.unity3d.com/ScriptReference/Rigidbody.html

[Unity Rigidbody AddForce ] https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

[Unity Tutorial Roll-a-ball 01] Creating a new project and Setting up the Game

1. 새 프로젝트 생성

2. 새로운 게임 씬 저장

File -> Save Scenes -> Assets 폴더에 _Scene 폴더 생성 -> MiniGame 저장

3. 게임 보드 (플레이 필드) 생성

GameObject -> 3D Object -> Plane 생성

Hierachy -> Plane을 Ground로 이름 변경

Transform -> 설정 (톱니바퀴 모양) -> Reset ( 오브젝트를 (0,0,0) 위치에 배치 )

Edit -> Frame Selected - 단축키 F  (씬 뷰에서 게임 오브젝트가 전체적으로 보이도록 시점 변환)

Gizmos -> Show Grid 체크 해제 (백그라운드의 눈금 표시 제거)

Transform -> Scale -> X : 2, Z : 2 로 수정 (오브젝트 크기 늘리기)

4. 플레이어 오브젝트 생성

Hierachy -> Create -> Sphere 생성

Sphere를 Player로 이름 변경 -> Transform Selection -> 설정 (톱니바퀴) -> Reset

Transform Selection -> Position -> Y : 0.5 로 수정 -> Edit -> Frame Selected (단축키 F)

5. 플레이 필드의 색상 변경하기

Project -> Create -> Folder -> Materials 폴더 생성

Materials 폴더 선택 -> Project -> Create -> Material 생성 -> Material을 Background로 이름 변경

Background -> Albido -> Color -> RGB (0, 32, 64) 로 수정

우하측의 Background 탭을 눌러서 Material 미리보기 활성화

Background material을 씬 뷰의 플레이 필드로 마우스 드로우 업

6. 플레이어가 선명하게 보이도록 조명 수정

Hireachy -> Directional Light -> Transform -> Rotation -> Y : 60 으로 수정

 

 

- Reference

[Roll-a-ball tutorial] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial

[Setting up the Game] https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial/setting-game?playlist=17141

+ Recent posts