Programming/Unity

[유니티] VR_물건 이동

lingk 2021. 6. 30. 14:17

[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