일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 5월
- 자료 구조
- 골드메탈
- 2024년
- 4월
- 2월
- 개인 프로젝트
- 개인 프로젝트 - 런앤건
- 2023년
- todolist
- 2025년
- c++
- 입문
- 3월
- 코딩 테스트
- 단계별로 풀어보기
- 코딩 기초 트레이닝
- C/C++
- 프로그래머스
- 유니티
- 2022년
- 다이나믹 프로그래밍
- 7월
- 게임 엔진 공부
- 1월
- 기초
- 수학
- 유니티 심화과정
- 10월
- 백준
- Today
- Total
기록 보관소
[Unity/유니티] 기초-뱀서라이크: 새로운 인풋시스템 적용하기[02+] 본문
개요
유니티 독학을 위해 아래 링크의 골드메탈님의 영상들을 보고 직접 따라 해보면서 진행 상황을 쓰고 배웠던 점을 요약한다.
https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2
📚유니티 기초 강좌
유니티 게임 개발을 배우고 싶은 분들을 위한 기초 강좌
www.youtube.com
뱀서라이크: 새로운 인풋시스템 적용하기[02+]
1. 패키지 설치
- 지난 시간에 플레이어 이동 구현에 사용했던 Input Manager(Horizontal, Vertical)는 유니티의 오래된 인풋 방식이다.
- 최근에는 유니티에서 새로운 Input System을 도입해서, 이를 사용해보기 위해 패키지 설치를 하려고 한다.
2. 인풋 액션 설정하기
- Player Input을 사용하려면 Actions라고 하는 프로필 에셋을 요구한다. 따라서 컴포넌트에 있는 Create Actions... 버튼으로 파일을 생성한다.
- Input Actions 창에서는 Action Maps(카테고리)에 따라 다양하게 설정할 수 있다. 현재는 플레이어 이동을 구현할 것이므로, Player의 Move Action을 설정하도록 하자.
- Actions 항목은 기존의 Input Manager에서 방향키나 (W, A, S, D와 같은)추가 키 설정과 비슷하다고 보면 될 것 같다.
- 위에 보이듯 게임 패드, 키보드, XR 컨트롤러, 조이스틱 등 다양한 디바이스의 인풋을 관리할 수 있다.
- Action Properties에서 Action Type은 어떤 형태의 input인지 결정해주는 속성으로, 버튼 클릭인지 값을 내보내는 것인지 구분할 수 있다. Control Type은 그 값의 형식을 결정한다.
- 이번 구현에서는 보이는 것처럼 Action Type은 Value, Control Type은 Vector2로 지정해주었다.
- Interactions에서는 input의 호출 타이밍을 지정하는 것으로, 사용자가 어떤 행동을 할 때 작동해야하는지 설정한다고 보면 된다.
- 위 4가지 방식 중 Press는 GetButtonDown(영상에서는 On Button Down이라고 했는데 아마 이를 뜻하는 것 같다)과 비슷하다고 한다.
- Processors는 input 값을 후보정한다.
- 이전에 대각선 보정을 위해서 벡터2 변수에 normalized를 했던 것처럼, Normalize Vector2를 추가하도록 한다.
- 변경 사항을 저장할 때는 직접 Save Asset 버튼을 눌러도 되고, 그 옆의 Auto-Save를 체크해서 자동 저장을 하도록 만들 수도 있다.
3. 스크립트 적용
- Player Input 컴포넌트를 자세히 보면 Behavior 아래에 여러 함수 이름들이 적힌 것을 볼 수 있다. 이를 활용해서 스크립트에 함수를 만들어 작성하면 적용이 된다.
//Plyaer Script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem; //새로운 Input System 추가
public class Player : MonoBehaviour {
Vector2 inputVec; //키보드 입력 값 변수
public float speed; //속도 관리 변수
Rigidbody2D rigid;
void Awake() {
rigid = GetComponent<Rigidbody2D>();
}
void FixedUpdate() {
//위치 이동
Vector2 nextVec = inputVec * speed * Time.fixedDeltaTime; //normalized는 Input Actions 창에서 이미 설정했으므로 제거
rigid.MovePosition(rigid.position + nextVec);
}
void OnMove(InputValue value) {
inputVec = value.Get<Vector2>(); //Get<T> : 프로필에서 설정한 컨트롤 타입 T 값을 가져오는 함수
}
}
- 일단 Input System 네임스페이스를 추가한 다음, OnMove 함수를 만들 것이므로 Update 함수에 있던 내용을 모두 제거했다.
'유니티 프로젝트 > 뱀서라이크' 카테고리의 다른 글
[Unity/유니티] 기초-뱀서라이크: 몬스터 만들기[05] (0) | 2023.05.22 |
---|---|
[Unity/유니티] 기초-뱀서라이크: 무한 맵 이동[04] (0) | 2023.04.08 |
[Unity/유니티] 기초-뱀서라이크: 2D 셀 애니메이션 제작하기[03] (0) | 2023.04.06 |
[Unity/유니티] 기초-뱀서라이크: 플레이어 이동 구현하기[02] (0) | 2023.03.24 |
[Unity/유니티] 기초-뱀서라이크: 2D 오브젝트 만들기[01] (0) | 2023.03.16 |