528 단어
3 분
유니티 2D 캐릭터 이동과 점프 구현하기
2025-01-16

Unity에서 2D 캐릭터의 이동과 점프를 간단히 구현하는 방법을 공유합니다. 아래 코드는 CharacterMovement라는 스크립트를 작성하여 캐릭터의 기본적인 이동과 점프 동작을 구현한 예제입니다.


코드 설명#

using UnityEngine;

public class CharacterMovement : MonoBehaviour
{
    public float moveSpeed = 5f;       // 이동 속도
    public float jumpForce = 5f;      // 점프 힘
    private Rigidbody2D rb;
    private Vector2 movement;

    private bool isGrounded;          // 캐릭터가 땅에 닿아 있는지 여부

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

    void Update()
    {
        if (!enabled) return;
        // 좌우 이동 처리
        movement.x = Input.GetAxis("Horizontal");

        // 점프 입력 처리
        if (Input.GetButtonDown("Jump") && isGrounded)
        {
            isGrounded = false; // 점프 시 땅 상태를 false로 변경

            // Rigidbody2D의 y축 속도를 직접 변경하여 점프
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
    }

    void FixedUpdate()
    {
        // 이동 처리
        rb.velocity = new Vector2(movement.x * moveSpeed, rb.velocity.y);
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        // Ground 레이어와 충돌했을 때만 isGrounded를 true로 설정
        if (collision.gameObject.layer == LayerMask.NameToLayer("Ground"))
        {
            isGrounded = true;
        }
    }
}

사용 방법#

  1. 스크립트 추가
    위 코드를 Unity 프로젝트에서 새 C# 스크립트로 생성하고 저장합니다. 예를 들어, 파일 이름을 CharacterMovement.cs로 저장합니다.

  2. 캐릭터에 스크립트 연결
    Hierarchy 창에서 캐릭터를 선택하고, 해당 스크립트를 드래그하여 캐릭터에 추가합니다.

  3. Rigidbody2D 추가
    캐릭터 오브젝트에 Rigidbody2D 컴포넌트를 추가합니다.

    • Gravity Scale 값을 조정하여 중력의 강도를 설정할 수 있습니다.
  4. Ground 레이어 설정
    바닥 역할을 하는 오브젝트에 Ground라는 레이어를 추가하고, 해당 오브젝트를 해당 레이어로 설정하세요.


이 스크립트를 적용하면 캐릭터가 키보드의 방향키 또는 A/D 키로 좌우 이동할 수 있으며, 점프 키(Space)로 점프할 수 있습니다.

TIP

캐릭터가 더 자연스럽게 움직이도록 하기 위해, 애니메이션과 더불어 물리적 파라미터를 세밀하게 조정하면 좋습니다.