움직임 제어(속도, 이동 방향)

using UnityEngine;

//player object에 현재 script 추가 시 RIgidbody2D 컴포넌트가 함께 추가됨
[RequireComponent(typeof(Rigidbody2D))]
public class MovementRidgidbody2D : MonoBehaviour
{
    [Header("Move Horizontal")]
    [SerializeField]
    private float       moveSpeed = 8;  // 이동 속도
    
    private Rigidbody2D rigid2D;        // 속력 제어를 위한 Rigidbody2D

    private void Awake()
    {
        rigid2D = GetComponent<Rigidbody2D>();
    }

    public void MoveTo(float x)
    {
        // x 이동 방향 설정 (외부 클래스에서 호출)
        rigid2D.velocity = new Vector2(x * moveSpeed, rigid2D.velocity.y);
    }
}
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private MovementRidgidbody2D movement2D;

    private void Awake()
    {
        movement2D = GetComponent<MovementRidgidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        UpdateMove();
    }

    private void UpdateMove()
    {
        // left, a = -1 / none = 0 / right, d = +1
        float x = Input.GetAxisRaw("Horizontal");

        // 좌우 이동
        movement2D.MoveTo(x);
    }
}

-해결: ground object에도 BoxCollider2D 컴포넌트를 추가해주었다.

Constraints - Freeze Rotation z = true // 활성화