내일배움캠프/TIL

[내배캠][Unity6기][TIL] 1. 빗물받는 르탄이(1~4)

binary는 호남선 2024. 9. 2. 23:32

 

Preview

- 비주얼 스튜디오 버전 선택 방법

- Sprite Renderer

- 애니메이션 만들기

- 프레임 맞추기

- Vector3

- GetComponent()

- 좌우 이동

- 이미지 플립(좌우)

- GetMouseButtonDown()

 

비주얼 스튜디오 버전 선택 방법

 [Edit] - [Preferences] - [External Tools] - External Script Editor 사용할 버전으로 변경

*2019에서 2022로 변경해두기!

Sprite Renderer

- 스프라이트 렌더러(Sprite Renderer) 컴포넌트는 스프라이트 를 렌더링하고 스프라이트가 2D 및 3D 프로젝트의 씬에 시각적으로 표시되는 방식을 제어

프로퍼티 기능
Sprite 컴포넌트가 렌더링할 스프라이트 텍스처를 정의. 오른쪽의 작은 점을 클릭하면 Object Picker 창이 열리며, 이용 가능한 스프라이트 에셋 리스트에서 선택.
Color 스프라이트의 버텍스 컬러를 정의하여 스프라이트의 이미지에 색조를 더하거나 다른 컬러를 적용. 컬러 피커에서 렌더링된 스프라이트 텍스처의 버텍스 컬러 설정 가능.
Flip 선택한 축에 있는 스프라이트 텍스처를 플립. 게임 오브젝트의 Transform 포지션은 플립되지 않음.
Order In Layer 정렬 레이어 내에서 스프라이트의 렌더 우선 순위를 설정. 숫자가 낮은 스프라이트가 먼저 렌더링되고 숫자가 높은 스프라이트가 그 아래에 오버랩.

참고 : https://docs.unity3d.com/kr/2022.3/Manual/class-SpriteRenderer.html

 

애니메이션 만들기

[ 멈춰 있는 이미지와 팔다리 들고 있는 이미지 2개로 걷는 애니메이션 만들기 ]

- Animation을 만들고 Loop Time true로 체크, 적용할 오브젝트에 Drag

- 오브젝트에 Animator 컴포넌트 생성된 것 확인

- 애니메이션 창에 적당한 시간 간격으로 이미지 반복 배치하고 적용

- 두 이미지가 계속 반복적으로 바뀌며 걷는 것처럼 보임

프레임 맞추기

- 프레임 : 게임 업데이트 루프의 주기, 게임 로직이 한번 반복되면 1frame

- 일반적으로 1초에 게임 로직(렌더링 제외)이 계산되는 횟수

- PC 환경에 따라 프레임이 달라지므로 프레임 고정 필요

void Start()
{
    Application.targetFrameRate = 60;	// 1초에 업데이트가 60번만 되도록 고정
}

Vector3

- 3D 공간에서 위치와 방향을 정의

- x(수평), y(수직), z(깊이)

- 위치(position), 방향(direction), 크기(scale)와 관련된 유용한 메서드 제공

- 자주 사용하는 값들 정적 변수로 정의됨

ex) Vector3(1, 0, 0) => Vector3.right

참고 : https://docs.unity3d.com/kr/530/ScriptReference/Vector3.html

GetComponent()

public T GetComponent();

- 오브젝트의 컴포넌트를 가져오는 함수

- 스크립트를 가지고 있는 오브젝트가 가지고 있는 컴포넌트만 불러올 수 있음(같은 Inspector 아래에 있어야함)

좌우 이동

    float direction = 0.05f;	// 속도 조절

    void Update()
    {
    	// 특정 조건 만족하면 방향 전환
        if (특정 조건)
        {
            direction = -0.05f;
        }
        // 오른쪽으로 이동
        transform.position += Vector3.right * direction;
    }

이미지 플립(좌우)

    SpriteRenderer renderer;	// 랜더러 변수 생성

    void Start()
    {
        renderer = GetComponent<SpriteRenderer>(); // 렌더러 컴포넌트 가져오기
    }

    void Update()
    {
        // 특정 조건을 만족하면 이미지를 좌우 반전
        if (특정 조건)
        {
            renderer.flipX = true;
        }
    }

좌우 이동 전환과 플립 쉽게 하기

direction *= -1;	// 이동 방향의 절대값 변경
renderer.flipX = !renderer.flipX;	// 플립 여부를 현재와 반대로 변경

GetMouseButtonDown()

public static bool GetMouseButtonDown(int button);

- 프레임 당 사용자가 마우스를 눌렀는지 확인하는 함수

- 인자로 클릭된 마우스 버튼의 종류 입력 받음

- 0 : 왼쪽, 1 : 오른쪽, 2 : 가운데

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
            Debug.Log("Pressed left-click.");

        if (Input.GetMouseButtonDown(1))
            Debug.Log("Pressed right-click.");

        if (Input.GetMouseButtonDown(2))
            Debug.Log("Pressed middle-click.");
    }