유니티 공부 #6

김유원·2021년 5월 16일
0

유니티_공부

목록 보기
6/7
post-thumbnail

'레트로의 유니티 게임 프로그래밍 에센스' 3부

6장 - 1 : 탄막 슈팅 게임 : 닷지

2부는 대부분 C++이나 Java에서 이용하는 클래스 타입에 대한 설명이어서 건너뛰었다.
오늘은 유니티에서 간단한 예제를 시작해보도록 하겠다.

1) 씬 구성하기

해당 예제를 만들기 위해 Dodge라는 프로젝트를 만들었다.

① 레벨 만들기

- 바닥 Plane 게임 오브젝트 만들기 (Hierarchy 창 > Create > 3D object > Plane)

+ Transform 컴포넌트에서 position은 (0,0,0) scale은 (2,1,2)로 변경
+ 프로젝트 창에서 Create > Material을 추가하여 Plane Color를 알베도 (0,0,0)으로 설정하여 Plane 오브젝트에 추가

ㅇ 바닥 생성 완료

- 벽 Cube 게임 오브젝트 4개 만들기 (Hierarchy 창 > Create > 3D object > Cube)

+ Cube 오브젝트의 이름을 Wall로 바꾸기
+ 프로젝트 창에서 Create > Material을 추가하여 Wall Color를 알베도 (255,255,255)으로 설정하여 Wall 오브젝트에 추가
+ Ctrl+D로 Wall, Wall(1), Wall(2), Wall(3) 생성
+ Transform 컴포넌트에서 각각 position과 scale 설정

ㅇ 벽 생성 완료

- 레벨 Level 게임 오브젝트 만들기(Hierarchy 창 > Create > Create Empty)

+ Level 게임 오브젝트의 위치를 Reset (Position을 (0,0,0)으로 만들기)
+ Plane과 Wall 오브젝트들을 모두 선택하여 Level의 하위로 드래그&드롭

ㅇ 게임 오브젝트들을 Level의 자식으로 설정

② 카메라 설정하기

- 카메라 위치 변경(Hierarchy 창의 Main Camera 선택)

+ Main Camera의 Position을 (0,15,-10), Rotation을 (60,0,0)으로 변경

- 카메라의 배경 변경

+ Main Camera 오브젝트의 Camera 컴포넌트에서 Clear Flags의 값을 Solid Color로 변경
+ Background의 컬러 필트에서 RGB 컬러를 (36,36,36)으로 변경

ㅇ 카메라 설정 완료

③ 플레이어 설정하기

- 플레이어가 될 Player 게임 오브젝트 생성(Hierarchy 창 > Create > 3D object > Capsule)

+ Capsule 오브젝트의 이름을 Player로 바꾸기
+ Player 게임 오브젝트의 Position을 (0,1,0)으로 변경
+ 프로젝트 창에서 Create > Material을 추가하여 Player Color를 알베도 (0,100,164)로 설정하여 Player 오브젝트에 추가

- Player 오브젝트에 Rigidbody 컴포넌트 설정 (Inspector 창 > Add Component > Physics > Rigidbody)

+ Inspectior 창 > Constraints 필드 펼치기 > Freeze Position은 Y만, Freeze Rotation은 X,Z 체크

ㅇ Player 오브젝트 설정 완료

④ 플레이어 스크립트 생성

이 두 기능을 가진 PlayerController 스크립트 준비

사용자의 키보드 입력 감지

Rigidbody를 사용하여 Player 게임 오브젝트 움직이기

- PlayerController 스크립트 생성(Project 창 > Create > C# Script)

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);
        }
        if (Input.GetKey(KeyCode.DownArrow) == true) //위쪽 방향키 입력이 감지된 경우 -z방향 힘 주기
        {
            playerRigidbody.AddForce(0f, 0f, -speed);
        }
        if (Input.GetKey(KeyCode.RightArrow) == true) //위쪽 방향키 입력이 감지된 경우 x방향 힘 주기
        {
            playerRigidbody.AddForce(speed, 0f, 0f);
        }
        if (Input.GetKey(KeyCode.LeftArrow) == true) //위쪽 방향키 입력이 감지된 경우 -x방향 힘 주기
        {
            playerRigidbody.AddForce(-speed, 0f, 0f);
        }
    }
    
    public void Die() //게임 오브젝트 비활성화
    {
        gameObject.SetActive(false);
    }
}

- PlayerController 스크립트를 Player 게임 오브젝트에 추가

+ PlayerController 스크립트를 Hierarchy창의 Player 게임 오브젝트로 드래그&드롭
+ Rigidbody 컴포넌트를 playerRigidbody에 할당

ㅇ Player 설정 완료

#1차 조작 확인

profile
개발 공부 블로그

0개의 댓글

관련 채용 정보