학습 주제

유니티-에셋-애니메이션 스크립트를 연동하여 캐릭터 움직이게 만들기

학습 목표는 무엇입니까?

유니티 엔진 에셋으로 오브젝트 지정하고 움직이게 만드는 것 그 자체

학습 내용

학습 내용을 작성해주세요

  • Unity 에셋과 컴포넌트
    • Unity Engine에서 오브젝트가 움직이게 하기 위해서는 에셋을 만들고, 그 에셋을 움직이게 만들 컴포넌트(Component)가 필요하다
    • 컴포넌트는 에셋에 포함된 transfer, sprite render, animation, script 등이 있음
  • Unity에서 모든 기기가 똑같은 프레임으로 작동할 수 있게 하기
    • Unity에서 작성된 스크립트를 실행하면, 기기 성능에 따라 게임의 속도가 다를 수 있음
    • 속도를 맞추기 위해 게임 내 실행할 프레임을 정의하는 속성이 Application.targetFrameRate임
    • 이 속성 값을 60으로 맞춰서 항상 60프레임으로 게임을 작동하게 만들 수 있음
    void Start()
        {
            Application.targetFrameRate = 60;
        }
    
  • Unity에서 컴포넌트를 가져올 수 있는 스크립트
    • C# 스크립트로 에셋 내부의 여러 값을 가져와 제어할 수 있음
    • Sprite renderer를 예시로 한다면 이를 전체 스크립트 함수에서 선언해주어야 함
    • 그리고, 선언한 변수를 가져다 사용하여 제어 가능
    using System.Collections;
    using System.Collections.Generic;
    using Unity.VisualScripting;
    using UnityEngine;
    
    public class Rtan : MonoBehaviour
    {
        float direction = 0.1f;
    
        **new SpriteRenderer renderer;**
    
        // Start is called before the first frame update
        void Start()
        {
            Application.targetFrameRate = 60;
            renderer = GetComponent<SpriteRenderer>();
            Debug.Log("check");
        }
    
        // Update is called once per frame
        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                direction *= -1;
                **renderer.flipX = !renderer.flipX;**
            }
    
            // 조건 : 벽에 부딪히면 반대방향을 보게 만들어라!
            // +라면 오른쪽으로 -라면 왼쪽으로 돌기 때문에 -1을 곱해주기만 하면 됨
            if (transform.position.x > 2.6 || transform.position.x < -2.6)
            {
                direction *= -1;
                **renderer.flipX = !renderer.flipX;**
            }
    
            // transform.position += new Vector3(1f, 0, 0); 을 아래 코드로 만들 수 있음
            transform.position += Vector3.right * direction;
        }
    }
    
    

+ Recent posts