InputManager
- Input Manager는 프로젝트에 대한 입력 축 및 축과 관련된 행동을 정의할 수 있다.
예전에 많이 사용했다고하는 구 인풋 시스템(InputManager)이지만 아직도 많은곳에서 활용하고있다고 한다.
InputManager의 문제점
- 다양한 플랫폼에 대응하거나, 키를 변경하는 리바인딩하는 부분이 부족하다.
- 해당 버전에서는 구현했던 내용들이 모두 한 클래스들에 모여있어 클래스에 대한 확장성과 유지보수성이 떨어지는 문제가 있다.
> 유니티 공식문서
코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InputManager : MonoBehaviour
{
[SerializeField] private float speed;
Rigidbody rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
// 매 프레임마다 Vertical축과 Horizontal축을 가져옵니다.
float vertical = Input.GetAxisRaw("Vertical");
float horizontal = Input.GetAxisRaw("Horizontal");
Vector2 direction = new Vector2(horizontal,vertical);
// 길이를 1로 만드는 작업
direction = direction.normalized;
rb.velocity = direction * speed;
}
}
[ GetAxis 메서드 ]
-1부터 1 사이의 값을 반환하는데, 입력 장치의 움직임에 따라 해당 값이 변경된다.
값이 0에 가까울수록 입력이 없거나 중립 상태를 나타내고, 양수 값은 양 방향 입력을, 음수 값은 음 방향 입력을 나타낸다.
- 주로 플레이어의 움직임, 회전, 점프 등을 처리하는 데 사용된다.
예를 들어, 수평 이동을 할 때, Input.GetAxis("Horizontal"); 을 사용하여 좌우 방향의 값을 얻을 수 있다.
코드를 보면 나는 부드러운 움직임보다는 딱딱 멈추는 움직임을 구현하기 위해 Raw를 썼는데 이 둘의 차이가 뭐냐면
- GetAxisRaw() 함수는 사용자 입력에 따라 즉시 -1 또는 1 값을 반환한다.
// 사용자 입력이 발생할 때 즉시 최대값으로 변환되는 원시(raw) 입력을 제공한다.
- GetAxis() 함수는 입력이 부드럽게 처리되도록 값을 보간한다.
키를 누르는 동안 점진적으로 0에서 1 또는 0에서 -1로 변화하며, 키를 뗄 때는 다시 0으로 돌아간다.
사용자가 입력을 부드럽게 제어할 수 있도록 한다.
라고 한다.
세부설정을 변경하고 싶다면
1. Edit > Project Settings 클릭
2. Input Manager > Axes 클릭
현재 수평키 확인해보면 a랑 d가 있죠? 서로 반대되는 키 설정하시면 됩니다.
InputManager에는 기본적으로 저희가 익숙하다고 생각하는 키배치대로 설정되어있는 것 같아요.
오늘의 회고
구 시스템이긴 하지만 간단한 프로젝트를 제작할때는 유용할 것 같고,
나는 이제까지 직접 입력을 받았을때 이벤트 함수를 호출해서 그렇게 했는데 이렇게 간단한 모시깽이가 존재했다니..... 유니티를 거의 처음 접해본 나는 증맬로... 신세계를 접한거나 다름이없다..........
쿠키런 만들때도 슬라이드키랑 점프키 키보드 버튼으로 만들어서 클릭 이벤트로 줬는데 그럴 필요가 없던거였네....
사실 오늘 완강을 하려고 했지만.. 실패했습니다.. 그치만... New Input 시스템을 배우는 것 까지의 노력은 해보겠습니다...
나: 포기 때리겠습니다.
포기: 아야!
끝..
'Record > TIL' 카테고리의 다른 글
[Unity] 애니메이션 활용 (내가 만든 캐릭터로 게임 만들기) (2) | 2024.05.10 |
---|---|
[Unity] Input system package 사용하기 (New Input Manager) (2) | 2024.05.09 |
[Unity] 팀프로젝트 던전 마무리 (2) | 2024.05.07 |
[Unity] 깊은 복사와 얕은 복사 (2) | 2024.05.03 |
[Unity] ref 매개변수 한정자 (2) | 2024.05.02 |