[Unity 2D]캐릭터 움직이기 - Hide
결과
스프라이트 생성
Hierarchy에 본인이 움직일 Sprite 추가
Hierarchy 마우스 우클릭 > 2D Object > Sprites > Capsule(또는 본인이 원하는 스프라이트)
스크립트 생성
Assets 마우스 우클릭 > Create > C# Script
Script이름은 임의로 작성(예시 : CharacterMovement)
(Assets 밑에 폴더들은 임의로 만든 것이므로 신경 x)
스크립트 작성
using UnityEngine;
public class CharacterMovement :MonoBehaviour
{
public float speed;
public Rigidbody2D rigid;
public Animator animator;
public char currentDir;
void Update()
{
PlayerMove();
}
void PlayerMove()
{
float xDir = Input.GetAxisRaw("Horizontal");
float yDir = Input.GetAxisRaw("Vertical");
animator.SetFloat("Horizontal",xDir);
animator.SetFloat("Vertical",yDir);
currentDir=yDir>0f?'U':yDir==0f?currentDir:'D';
currentDir=xDir>0f?'R':xDir==0f?currentDir:'L';
Vector3 dir=new Vector3(xDir,yDir,0f);
rigid.velocity=dir.normalized*speed;
}
}
[움직임 표현하기]
GetAxis : -1f ~ 1f 사이의 값 반환
GetAxisRaw : -1, 0, 1 셋 중 하나 반환
부드러운 움직임까지는 필요 없으므로 GetAxis 사용
애니메이터 추가
Assets 마우스 우클릭 > Create > Animator Controller
Animator 이름은 임의로 작성(예시 : Player)
위에 만든 Animator 더블클릭 > Parameters + 버튼 > Float로 2개 생성
이름은 각각 Horizontal , Vertical
컴포넌트 추가
Hierarchy에 만들었던 Sprites에 Rigidbody 2D , Animator , Character Movement(Script) 추가
Rigidbody2D BodyType(또는 Gravity) 변경, Character Movements.cs에 필요한 컴포넌트 추가
- Rigidbody 2D > Body Type : Dynamic으로 두고 Gravity Scale 0으로 만들거나 Kinematic으로 변경
- Animator > Controller : Player
- Character Movement(Script) > Speed : 5(또는 원하는 숫자)
- Character Movement(Script) > Rigid : Player.Rigidbody2D
- Character Movement(Script) > Animator : Player.Animator
끝!
전체 실행 모습
갑자기 유니티로 회피했죠?
기본 중의 기본 움직이기를 만들었다.
사실 이것만 할 줄 알아도 스토리 게임 충분히 만들 수 있다고 생각한다.(스토리가 없어서 문제)