본문 바로가기
앱 만들기/유니티2D 게임 만드는 방법

물리기반으로 캐릭터 움직이기

by 게임만들기 블로그 2026. 1. 6.
반응형

using UnityEngine;

/*물리 기반 캐릭터 움직이기 */
public class Player : MonoBehaviour
{
    public float MoveSpeed = 5; //이동 속도 변수
    private Rigidbody2D _rigidbody2D; // 물리 처리를 위한 컴포넌트
    private Vector2 _moveDirection; // 이동 방향

    private void Start()
    {
        //게임 오브젝트에서 Rigidbody2D 컴포넌트를 가져옴.
        _rigidbody2D = GetComponent<Rigidbody2D>();
    }
    // Update is called once per frame
    void Update()
    {
        //키보드 입력받기
        float horizontalInput = Input.GetAxisRaw("Horizontal");
        float verticalInput = Input.GetAxisRaw("Vertical");

        _moveDirection = new Vector2(horizontalInput, verticalInput);
        if (_moveDirection.magnitude > MoveSpeed)
        {
            _moveDirection.Normalize();
        }
    }

    private void FixedUpdate()
    {
        _rigidbody2D.MovePosition(_rigidbody2D.position + _moveDirection * MoveSpeed * Time.fixedDeltaTime);
    }

    /* Update() 함수는 컴퓨터 성능에 따라 호출빈도가 달라지지만, FixedUpdate() 함수는 항상 일정한
     * 간격으로 호출됨. 물리 시뮬레이션은 정확한 시간 간격이 중요하기에  물리관련 코드는
     * FixedUpdate 에 작성하는 것이 좋음.
     */
}

반응형

댓글