게임개발 예제모음

인풋시스템을 통한 오브젝트 이동 (ActionMap) 본문

유니티 메모장

인풋시스템을 통한 오브젝트 이동 (ActionMap)

게임을만들어보자 2025. 6. 3. 11:40

○ 오브젝트에 Player Input 컴포넌트 추가

○ Action에서 액션맵편집 (확인) 필요

○ 트랜스폼이 아닌 리지드바디 이용시에는 Update가 아닌 FixedUpdate에서 동작하도록 작성

○ OnMove함수는 액션맵편집의 카테고리 이름 앞에 On을 추가하면 OK

   ex) 방향키 이동을 바인딩한 액션맵카테고리 이름이 MyMove라면 onMyMove함수가 됨

   ※ 인스펙터에서 메소드 이름 확인 가능

using UnityEngine;
using UnityEngine.InputSystem;

public class ExampleClass : MonoBehaviour
{
    float moveSpeed = 1f;
    //이동속도 변수
    Transform myTransform;
    //트랜스폼 컴포넌트 캐싱을 위한 변수
    Vector2 myMoveVector;
    //오브젝트의 이동 벡터 변수
    //인풋시스템의 방향키의 경우 Vector2값을 갖는다

    void Start()
    {
        myTransform = GetComponent<Transform>();
    }

    void Update()
    {
        Vector2 myNextVector = myMoveVector * moveSpeed * Time.deltaTime;
        //오브젝트의 이동벡터에 속도를 곱하여 이동거리를 구한다
        myTransform.Translate(myNextVector);
        //해동 이동거리만큼 오브젝트 이동
    }

    void OnMove(InputValue value)  //인풋시스템에서 받은 값을 vector2타입으로 변환
    {
        myMoveVector = value.Get<Vector2>();
    }
}