포토샵에서 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 오브젝트를 선택하고 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으로 애니메이션 되는 것을 볼 수 있습니다
'게임 만들기 강좌 > 유니티2D액션게임만들기' 카테고리의 다른 글
2D 액션 게임 만들기 6 적캐릭터 만들기 및 움직이기 (1) | 2021.03.24 |
---|---|
2D 액션 게임만들기5 카메라 이동(Camera Follow) (0) | 2021.03.02 |
2D 액션 게임 만들기 4 Particle Effect 만들기 (0) | 2021.02.22 |
2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting) (0) | 2021.02.05 |
2D 액션 게임 만들기 2 weapon (총) 회전 시키기 (0) | 2021.02.01 |