[Package Manager]에서 Input System을 설치한다.
설치 후에 다음과 같이 Plane과 Cube를 배치해준다.
[Assets]에서 우클릭 Create > Input System.
이때, 이름은 Default Controls로 정해준다.
Defatult Controls를 더블클릭 하면 다음과 같은 창이 뜬다. 빨간색으로 표시한 Auto-Save에 체크를 해준다.
Action Maps의 +버튼으로 추가해주고 이름은 Default로 정해준다.
New action의 이름은 Move로, 밑의 <No Binding>의 Properties는 우측에서 설정해준다.
Path는 XR Controller > Optional Controls > joystick
※ 2D Vector는 키보드 입력~
PlayerMovement 스크립트 생성!
코드는 다음과 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
[RequireComponent(typeof(CharacterController))]
public class PlayerMovement : MonoBehaviour
{
[SerializeField] InputActionAsset playerControls;
InputAction movement;
CharacterController character;
Vector3 moveVector;
[SerializeField] float speed = 10f;
// Start is called before the first frame update
void Start()
{
var gameplayActionMap = playerControls.FindActionMap("Default");
movement = gameplayActionMap.FindAction("Move");
movement.performed += OnMovementChanged;
movement.canceled += OnMovementChanged;
movement.Enable();
character = GetComponent<CharacterController>();
}
// Update is called once per frame
void FixedUpdate()
{
character.Move(moveVector*speed*Time.fixedDeltaTime);
}
public void OnMovementChanged(InputAction.CallbackContext context)
{
Vector2 direction = context.ReadValue<Vector2>();
moveVector = new Vector3(direction.x, 0, direction.y);
}
}
Player 오브젝트에 Player Movement 스크립트를 추가하고, Player Movement의 Player Controls에는 위에서 만든 DefaultControls을 넣어준다.
https://www.youtube.com/watch?v=SAij67HrgAM&list=PLwz27aQG0IIJ8cPM-npX2AJ6Nb-MruYP3&index=4
반응형
'Programming > Unity' 카테고리의 다른 글
[유니티] UI 버튼 작동이 안될때 (0) | 2021.08.23 |
---|---|
나무 (0) | 2021.08.12 |
[유니티] VR_물건 잡기 (1) | 2021.06.29 |
[유니티] XR Interaction Toolkit 패키지 셋팅 (0) | 2021.06.29 |
[유니티] RayCast (0) | 2021.06.28 |