Guest User

PlayerMovement

a guest
Feb 22nd, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.30 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.XR;
  5. using UnityEngine.XR.Interaction.Toolkit;
  6. using TMPro;
  7.  
  8. public class PlayerMovement : MonoBehaviour
  9. {
  10.     private InputDevice _device_leftController;
  11.     private InputDevice _device_rightController;
  12.     private CharacterController _character;
  13.     private Vector2 _inputAxis_leftController;
  14.     private Vector2 _inputAxis_rightController;
  15.     private GameObject _camera;
  16.  
  17.     private TextMeshPro textmeshPro;
  18.  
  19.     private float speed;
  20.     private float gravity = -9.81f * 0.5f;
  21.  
  22.     [SerializeField]
  23.     public bool snapTurningEnabled;
  24.     [SerializeField]
  25.     public int snapTurningAmount;
  26.  
  27.     private bool isSnapTurning;
  28.     void Start()
  29.     {
  30.         _device_leftController = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand);
  31.         _device_rightController = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
  32.         _character = GetComponent<CharacterController>();
  33.         _camera = GetComponent<XRRig>().cameraGameObject;
  34.         TextMeshPro textmeshPro = GetComponent<TextMeshPro>();
  35.     }
  36.     void Update()
  37.     {
  38.         _device_leftController.TryGetFeatureValue(CommonUsages.primary2DAxis, out _inputAxis_leftController);
  39.         _device_rightController.TryGetFeatureValue(CommonUsages.primary2DAxis, out _inputAxis_rightController);
  40.  
  41.         var inputVector_leftController = new Vector3(_inputAxis_leftController.x, 0, _inputAxis_leftController.y);
  42.         var inputVector_rightController = new Vector3(_inputAxis_rightController.x, 0, _inputAxis_rightController.y);
  43.  
  44.         float targetAngle = Mathf.Atan2(_inputAxis_leftController.x, _inputAxis_leftController.y) * Mathf.Rad2Deg + _camera.transform.eulerAngles.y;
  45.         var newDirection = Quaternion.Euler(0,targetAngle,0) * Vector3.forward;
  46.         Vector3 fallDirection = Vector3.zero;
  47.  
  48.         if (inputVector_leftController.magnitude>0.2)
  49.         {
  50.             speed = inputVector_leftController.magnitude * 3.0f;
  51.         }
  52.         else
  53.         {
  54.             speed = 0f;
  55.         }
  56.  
  57.         if (_inputAxis_rightController.x > 0.2f || _inputAxis_rightController.x < -0.2f)
  58.         {
  59.             if (snapTurningEnabled)
  60.             {
  61.                 if (!isSnapTurning)
  62.                 {
  63.                     transform.Rotate(Vector3.up * snapTurningAmount * Mathf.Sign(_inputAxis_rightController.x));
  64.                     isSnapTurning = true;
  65.                 }
  66.             }
  67.             else
  68.             {
  69.                 transform.Rotate(Vector3.up * _inputAxis_rightController.x);
  70.             }
  71.         }
  72.         else
  73.         {
  74.             if (_inputAxis_rightController.x <= 0.2f && inputVector_rightController.x >= -0.2f)
  75.             {
  76.                 isSnapTurning = false;
  77.             }
  78.         }
  79.  
  80.         if (_character.isGrounded)
  81.         {
  82.             fallDirection.y = Mathf.Max(fallDirection.y, 0);
  83.  
  84.             if (_inputAxis_rightController.y > 0.6f)
  85.             {
  86.                 fallDirection.y += 100f * -gravity;
  87.             }
  88.         }
  89.         else
  90.         {
  91.             fallDirection.y += gravity;
  92.         }
  93.  
  94.         textmeshPro.text = "Hello World";
  95.  
  96.  
  97.         _character.Move(newDirection * Time.deltaTime * speed);
  98.         _character.Move(Vector3.up * fallDirection.y * Time.deltaTime);
  99.     }
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment