Unity/Unity

[Unity 2D]캐릭터 움직이기 - Hide

zz0zz9 2025. 5. 1. 07:33
반응형
반응형
결과


스프라이트 생성

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

 

끝!

 

 

전체 실행 모습

갑자기 유니티로 회피했죠?

기본 중의 기본 움직이기를 만들었다.

사실 이것만 할 줄 알아도 스토리 게임 충분히 만들 수 있다고 생각한다.(스토리가 없어서 문제)

반응형