일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 텍스트게임
- 스파르타내일배움캠프TIL
- 프로그래머스
- 오블완
- 피셔예이츠
- 내일배움캠프
- 마크다운
- 스파르타부트캠프
- 스파르타
- 내주말
- 스탠다드
- 백준
- Input Field
- 분반별
- 유니티
- 티스토리챌린지
- Action
- 최종프로젝트
- projectl
- 내배캠
- 코테
- input system
- 스파르타내일배움캠프
- 분반별학습
- Til
- 스파르타내배캠til
- 코딩테스트
- string배열과 char
- 알아볼것
- 코테풀기
- Today
- Total
Ottoman
내일배움캠프 4주 3일차(18) TIL 유니티의 New Input System 본문
이번에도 마크다운으로 작성했습니다.
Input Action
- 유니티 패키지 매니저에서 Input System을 인스톨하면 만들 수 있다.
- Input System을 인스톨하면 만들수 있는 새로운 컴포넌트 Player Input에서 쓰이는 파일이다.
사용하는 순서
- 좌상단의 All Control Schemes를 클릭하면 Add Control Schemes를 할 수 있다. 이것을 통해서 컨트롤러로 쓸 디바이스를 선택한다. 여기서는 키보드와 마우스를 선택했다. 함께 쓸 묶음으로 보면 된다.
- 왼쪽 ActionMaps에서 + 를 클릭하여 New action map을 만든다. 이름은 이 ActionMap을 사용할 객체의 이름을 붙여주면 좋을것같다.
- ActionMap을 만들고 그걸 클릭하면 가운데 Actions가 생긴다. +를 클릭해서 New action을 만들고 ActionMap에서 만든 "이름"이 할 행동의 이름을 붙여준다. (Move, Look, Fire ...)
- 만든 Actions을 클릭하면 오른쪽 Action Properties를 설정할 수 있다.
- Action Type : 입력을 어떻게 받을 것인지. (Value, Button, Pass Through 3가지가 있다.)
Value | 일반적인 상태에 사용함. 눌렀을 때, 누르고 있을 때, 뗄 때 등 다양한 상황에 대응할 수 있고, 다양한 컨트롤에 대응할 수 있음. |
---|---|
Button | 눌렀을 때 딱 발생하는 액션에 활용. Control 타입이 Button으로 고정됨. |
Pass-Through | 명확화(Disambiguation을 거치지 않은 Value. Value 쓰시면 됩니다. |
- Control Type : 입력한 데이터가 어떤 모양으로 들어올 지를 정함
주요 활용 Axis(float), Button(일반적으론 버튼을 누름에 따라 1, 0, 하지만 특이 케이스 있음), Vector2 (조이스틱 같은 것에 활용)
- 다시 가운데 Action으로 돌아와서 만든 Move의 오른쪽 +를 클릭하면 Add Binding을 할 수 있다. 여기에 wasd를 위한 프리셋이 준비되어있다.
- 만들어진 Up,Down,Left, Right 부분을 누르면 오른쪽에 Binding properties가 나타난다. Path를 눌러 Up,Down,Left, Right 의 동작에 할당될 키를 찾아서 클릭해주자.
- 다 만들었으면 이 행동을 할 객체에 Player Input 컴포넌트를 추가하고 컴포넌트의 Actions에 만든 Input Action Asset파일을 드래그앤드롭하면 된다.
현재는 Behavior를 Send Messages로 하고 있다.
Input Action Asset에서 추가한 OnMove, OnLook, OnFire가 추가되어있음을 볼 수 있다.
유니티Docs(영어...)
Behavior : How the PlayerInput component notifies game code about things that happen with the player. See documentation on notification behaviors.
PlayerInput 컴포넌트가 플레이어와 관련된 상황에 대해 게임 코드를 어떻게 알리는지에 대한 방식입니다. 알림 동작에 대한 문서를 참조하세요.
GPTGPTGPT펀치
Send Messages 또는 Broadcast Messages 사용 시
PlayerInput의 알림 동작이 Send Messages 또는 Broadcast Messages로 설정되어 있을 때, 다음과 같이 컴포넌트에 메서드를 정의하여 Actions에 응답하도록 앱을 설정할 수 있습니다:
public class MyPlayerScript : MonoBehaviour
{
// "jump" 액션은 "OnJump" 메서드가 됩니다.
// 액션을 트리거한 컨트롤에서 값을 관심 없으면 인수 없는 메서드를 사용합니다.
public void OnJump()
{
// 여기에 Jump 코드 추가
}
// 액션을 트리거한 컨트롤의 값에 관심이 있다면, InputValue 유형의 매개변수를 선언할 수 있습니다.
public void OnMove(InputValue value)
{
// 컨트롤에서 값을 읽습니다. 타입은 액션이 어떤 컨트롤과 연결되어 있는지에 따라 달라집니다.
var v = value.Get<Vector2>();
// 중요:
// 주어진 InputValue는 콜백의 기간 동안만 유효합니다. InputValue 참조를 어딘가에 저장하고 나중에 Get<T>()를 호출하는 것은 올바르게 작동하지 않습니다.
}
}
Send Messages를 사용하는 경우, 해당 컴포넌트는 같은 GameObject에 있어야 하며, Broadcast Messages를 사용하는 경우, 같은 GameObject 또는 자식 GameObject에 있어야 합니다.
- Input System이 새로 생겨난 이유
- 기존 InputManager는 다양한 입력장비에 대응하기 어렵다.
- 입력 처리와 입력받은 행동을 실행할 주체를 분리시켰다. 이렇게하면 입력과정에 있는 클래스에 대한 확장성과 유지보수성이 향상된다. 객체지향 프로그래밍의 단일 책임 원칙을 적용시킨 것이다.
New Input System
New Input System의 핵심 개념들
- Input Action: 입력 행동을 정의합니다. 예를 들어 "점프", "공격" 등의 행동을 정의하고, 이러한 행동을 트리거하는 키 또는 버튼을 지정할 수 있습니다.
- Input Action Asset: 여러 개의 입력 행동을 그룹화하는 방법입니다. 이를 통해 재사용 가능한 입력 설정을 만들어 게임 내의 다른 캐릭터나 메뉴에 적용할 수 있습니다.
- Player Input Component: Unity의 New Input System에 추가된 새로운 컴포넌트로, 자동으로 입력 행동을 처리하고 해당 게임 오브젝트에 메시지를 보냅니다.
New Input System의 장점
- Cross-Platform Compatibility: New Input System은 다양한 플랫폼과 입력 장치에 대해 일관된 방식으로 작동합니다.
- Rebinding: 플레이어가 게임 내에서 자신의 입력 설정을 변경할 수 있도록 지원합니다.
- Multiplayer Support: 여러 플레이어가 동일한 장치에서 게임을 플레이하거나, 각각의 장치에서 게임을 플레이할 때 입력을 쉽게 처리할 수 있습니다.
현재 코드의 Player Input의 과정을 이해하고자 글로 옮겨본 결과. 오전 내내 했지만 유익한 시간이었다.
객체지향을 위해 이렇게 많은 과정을 거친다.
방향의 정규화에 대해서 방향만 있으면 뭐하러 하는 의문을 벡터의 정의를 되새겨서 풀 수 있었다. 짧게나마 공부한게 도움됐다.
'TIL' 카테고리의 다른 글
내일배움캠프 4주 4일차(19) TIL 유니티2D개인프로젝트 이벤트기반프로그래밍 (0) | 2024.05.10 |
---|---|
내일배움캠프 4주 3일차(18) -2- TIL (0) | 2024.05.10 |
내일배움캠프 4주 2일차(17) TIL 마크다운, 유니티 기초시작 (1) | 2024.05.08 |
내일배움캠프 4주 1일차(16) TIL 팀프로젝트발표 피드백, 클래스 (0) | 2024.05.07 |
내일배움캠프 3주 5일차(15) TIL 팀프로젝트, is와 as, 람다약간 (1) | 2024.05.03 |