본문 바로가기

기타/패스트캠퍼스 Unity

유니티 입문 패스트캠퍼스 챌린지 11일차

플레이어 만들기

 

- Assets/Scripts에 Player.cs 생성

- Vector3 형 MoveVector 변수를 [SerializeFiled]로 정의

- UpdateMove

- ProcessInput

 

플레이어로 사용할 비행기 모델 다운로드

https://assetstore.unity.com/packages/3d/vehicles/space/star-sparrow-modular-spaceship-73167

 

Star Sparrow Modular Spaceship | 3D 우주 | Unity Asset Store

Elevate your workflow with the Star Sparrow Modular Spaceship asset from Ebal Studios. Find this & other 우주 options on the Unity Asset Store.

assetstore.unity.com

public class Player : MonoBehaviour
{
    [SerializeField]
    Vector3 MoveVector = Vector3.zero;

    void Update()
    {
        UpdateMove();
    }

    void UpdateMove()
    {

    }

    public void ProcessInput(Vector3 moveDirection)
    {

    }
}

 플레이어 스크립트를 생성해서 움직임을 받기위한 Vector3와 움직임 처리를위한 Update쪽 코드를 준비 해 둔다.

 

플레이어 Prefab 만들기

- Scene에 플레이어 모델 추가 후 크기와 Material의 쉐이더를 조정

- Empty GameObject 추가 후 플레이어 모델을 자식으로 계층 변경

- Player 스크립트 Attach

- Project 뷰로 드래그해서 Prefab으로 저장

 

비행기 모델을 추가한 화면

 

 다운받은 비행기 모델의 Prefab을 Hierarchy창에 드래그해서 씬에 집어넣고 회전과 크기조절을 한다. 그리고 색상이 너무 어두워서 Material을 unlit 쉐이더로 변경했다. 마지막으로 아까 생성해둔 스크립트를 오브젝트에 붙이면 된다.

이렇게 완성한 플레이어 오브젝트를 프로젝트 폴더에 드래그해서 넣으면 자동으로 Prefab으로 만들어진다.

 

입력 감지용 InputController 만들기

 

- 입력을 감지할 클래스

- 입력 값에 반응해 게임내의 기능을 호출

 

유니티 블로그에서 소개되었던 인풋시스템이라는 패키지가 있지만 아직 안전한지 많이 검증이되지않아서, 레거시 객체인 UnityEngine.Input을 사용해서 입력을 처리할 예정이다.

 

 Input.GetKey를 사용해서 키의 입력을 받을건데 WASD를 통한 이동과 화살표키를 통한 이동을 둘다 구현한다. 그리고 EmptyObject를 생성해서 InputController 스크립트를 붙여둔다.

public class InputController : MonoBehaviour
{
    void Update()
    {
        UpdateInput();
    }

    void UpdateInput()
    {
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            Debug.Log("Up");
        }
        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            Debug.Log("Down");
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            Debug.Log("Left");
        }
        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            Debug.Log("Right");
        }
    }
}

 

SystemManager 만들기와 입력 값 전달

- 게임 내 각종 시스템을 관리할 클래스

- 싱글톤으로 만들어서 소스 코드 어디서나 접근

- 주요 변수들에 접근할 수 있도록 기능 제공

 

시스템 매니터 스크립트를 생성하고, C#에서 사용하는 일반적인 싱글턴 코드를 작성한다.

public class SystemManager : MonoBehaviour
{
    static SystemManager instance = null;

    public static SystemManager Instance
    {
        get
        {
            return instance;
        }
    }

    private void Awake()
    {
        if(instance != null)
        {
            Debug.LogError("SystemManager Singleton error!");
            Destroy(gameObject);
            return;
        }

        instance = this;
    }
}

최초로 Awake를 접근할때만 instance가 만들어지고 그 이후부터 Awake가 불리면 파괴된다. EmptyObject를 만들어서 스크립트를 붙이고 씬을 저장한다.

 

아직까지 플레이어를 움직이는 동작은 구현하지 않았다.

 

https://fastcampus.co.kr/dev_online_game

 

C#과 유니티로 배우는 게임 개발 올인원 패키지 Online. | 패스트캠퍼스

현직 게임업계 게임 개발자 직강 C# 프로그래밍부터 게임 물리와 수학까지 모두 정복!

fastcampus.co.kr

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.