반응형

포토샵에서 Player로 사용할 캐릭터를 각 관절을 나눈 후에 파일을 저장합니다 

왜냐하면 그림파일을 유니티에 옮긴 후에 캐릭터를 움직이는 애니메이션을 주기 위함입니다 

그림파일을 PNG 파일로 저장합니다 

 

 

유니티 새프로젝트를 만들고 Assets에 폴더 이름을 Texture 라 하고 그림파일을 임포트 합니다

그림파일을 드래그 하셔서 옮기셔도 파일이 Texture파일에 들어가게 됩니다 

 

 

 

 

 

 

 

그림파일을 안드로이드 환경에서 작업하기 위해서는 그림 파일 설정을 해 주어야 합니다 

아래 그림과 같이 설정값을 바꾸고 Sprite Editor에 들어갑니다 

 

Sprite Editor 에 들어가지 않으면 Window -> Package Manager 세 들어갑니다 

 

 

package Manager에서 2 DSprite를 인스톨합니다 

 

 

 

 

 

 

 

 

그러면 Sprite Ediltor에 들어가서  자동으로 그림파일을 나누는 작업을 합니다 

아래 그림과 같이 Slilce 해주고 Apply 합니다 

 

 

그림파일을 hierarchy 창에 옮긴 후 각각의 그림파일이 보일 수 있게 Sorting Layer를 지정하고 Order in Layer 각각의 값을 줍니다 

 

하이 라키에 빈 오프젝트를 만들고 이름을 Player 하고 그림파일을 자식으로 옮깁니다 

 

 

 

 

 

 

 

 

Player를 선택하고 Window -> Animation->Animation을 선택합니다 

 

Animation 탭에서 Create New Clip.. 을 선택하여  Player_idle 을 만들고 애니메이션을  만듭니다 

 

 

 

 

Player_Run 애니메이션을 만듭니다 

 

 

 

 

Scripts 폴더를 만들고 새로운 Player 스크립트를 만듭니다  

Player 오브젝트에 Player 스크립트를 연결하고 Rigidbody2D 컴포넌트를 생성해줍니다 

그리고 Player 스크립트를 작성합니다 

 

 

 

Player 스크립트 작성

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public float speed;

    private Rigidbody2D rigid;

    private Vector2 moveAmount;

    private void Start()
    {
        rigid = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        //키보드(WSAD)의 좌우상하를 방향을 정의해 준다   
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"),
            Input.GetAxisRaw("Vertical"));

        //움직임방향에 속도를 곱한다
        moveAmount = moveInput.normalized * speed;
    }

    private void FixedUpdate()
    {
        //움직임 방향에 시간에 따라 리지드 바디 포지션값을 더한다 
        rigid.MovePosition(rigid.position + moveAmount * Time.fixedDeltaTime);
    }

}

 

 

키보드에서  상하좌우 키와 WSAD 키보드를 움직이면 캐릭터가 상하 좌우 방향 대로 움직이는 것을 확인합니다 

Player.psd
1.07MB

 

 

 

 

 

Player 오브젝트를 선택하고 Animation -> Animator 를 선택합니다 

 

 

Animator 창이 뜨면 Base Layer 에서 Player_idle과 Player_Run을 서로 Make Transition 하여 연결합니다 

그리고 Parameters 에서 + 버튼을 누르고 Bool을 선택하고 이름을 Run으로 합니다 

 

 

 

Player_idle에서 Player_Run으로 가는 선을 선택하고 Conditions에서 + 추가하고 Run을 선택하고 true 하며 아래 사진과 같이 속성 값을 바꿉니다 

 

Player_Run에서 Player_idle 가는 선을 선택하고  Conditions 에서 + 추가하고 Run 하고 fale 하며 아래와 같이 속성 값을 바꿉니다 

 

 

 

Player 스크립트를 수정 합니다 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public float speed;

    private Rigidbody2D rigid;

    private Vector2 moveAmount;

    private Animator anim;
    private void Start()
    {
        rigid = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();


    }

    private void Update()
    {
        //키보드(WSAD)의 좌우상하를 방향을 정의해 준다   
        Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"),
            Input.GetAxisRaw("Vertical"));

        //움직임방향에 속도를 곱한다
        moveAmount = moveInput.normalized * speed;

        //키보드를 누르면 Player 애니메이터 파라미터를 적용하고 캐릭터를 움직인다 
        if (moveInput != Vector2.zero)
        {
            anim.SetBool("Run", true);
        }
        else
        {
            anim.SetBool("Run", false);
        }
    }

    private void FixedUpdate()
    {
        //움직임 방향에 시간에 따라 리지드 바디 포지션값을 더한다 
        rigid.MovePosition(rigid.position + moveAmount * Time.fixedDeltaTime);
    }

}

 

 

 

아래 화면과 같이 캐릭터가 평상시 Player_idle 에서 키보드 누르면 Player_Run으로 애니메이션 되는 것을 볼 수 있습니다 

 

반응형

+ Recent posts