본문 바로가기

기타/패스트캠퍼스 Unity

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

 10일차 부터 구체적으로 프로젝트를 만들어서 진행하게 된다. 대부분의 리소스는 외부에서 가져와서 import하고 유니티에서 작업해야 하는 부분만 집중적으로 다루게 된다.

 

게임의 배경 만들기

 

배경으로 사용할 리소스 다운

https://craftpix.net/freebies/free-horizontal-2d-game-backgrounds/

 

Free Horizontal 2D Game Backgrounds - CraftPix.net

Here is a set of high-quality Free Horizontal 2D Game Backgrounds. This graphics is perfect for the genre of runner, platformer, and other similar arcade

craftpix.net

 

배경 오브젝트 배치

- 각 텍스쳐의 Material 만들기

- 배경 오브젝트 배치와 Material 설정하기

- 카메라를 직교 투영으로 설정

- Game 뷰의 해상도 설정하기

- 해상도에 맞게 배경 오브젝트 조정

 

배경 이미지 머테리얼을 만들기 위해 Create>Material로 생성하고

Shader를 Unlit/Transparent로 세팅한다

Unlit은 Unlight의 약자로 빛의 영향을 안받는 쉐이더라는 의미이고

Transparent는 투명하다는 의미로 색상의 Alpha값을 사용하는 쉐이더라는 의미이다.

 

3D Object>Quad를 만들어서 방금 만든 머테리얼을 적용하고 위치를 조정한다.

카메라를 직교 투영으로 변경한다 (2D 게임이므로)

 

Quad를 추가하는 작업 도중

 

배경 스크롤링 소스 작성하고 적용하기

- Script가 Attach될 게임오브젝트 만들기

- 스크롤링 Script 작성

- Script를 Attach 하고 Renderer를 링크

- 설정값을 조정하고 테스트 플레이

 

BGScrollData라는 class를 만들고 멤버는 public으로 선언한다. (외부에서 받아올것이므로)

class대신 struct로 해도 되는데 struct는 변하는 값을 받아서 쓸때 곤란하다고 함

 

그리고 Update에서 프레임 단위로 화면을 업데이트 시켜주게되는데 이 때 배경화면을 자연스럽게 흐르게 하면 된다.

인스펙터에서 Speed값을 입력받아서 Time.deltaTime만큼 곱하면 이동 거리를 구할 수 있다. (속도 * 시간 = 거리)

 

속도는 자연스러운 수치를 조절해가면서 찾아도되지만 강의에서 미리 알려준 속도를 유니티 인스펙터에서 적용하도록 한다.

 

최종 소스코드는 아래와 같다.

[System.Serializable]
public class BGScrollData
{
    public Renderer RenderForScroll;
    public float Speed;
    public float OffsetX;
}

public class BGScroller : MonoBehaviour
{
    [SerializeField]
    BGScrollData[] ScrollDatas;

    // Update is called once per frame
    void Update()
    {
        UpdateScroll();
    }

    void UpdateScroll()
    {
        for (int i = 0; i < ScrollDatas.Length; i++)
        {
            SetTextureOffset(ScrollDatas[i]);
        }
    }

    void SetTextureOffset(BGScrollData scrollData)
    {
        scrollData.OffsetX += (float)(scrollData.Speed) * Time.deltaTime;
        if (scrollData.OffsetX > 1)
            scrollData.OffsetX = scrollData.OffsetX % 1.0f;

        Vector2 Offset = new Vector2(scrollData.OffsetX, 0);

        scrollData.RenderForScroll.material.SetTextureOffset("_MainTex", Offset);
    }
}

 

 

완성 화면

 

https://fastcampus.co.kr/dev_online_game

 

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

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

fastcampus.co.kr

https://bit.ly/3FVdhDa

 

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

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

fastcampus.co.kr

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