Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.XR;
- using UnityEngine.XR.Interaction.Toolkit;
- using TMPro;
- public class PlayerMovement : MonoBehaviour
- {
- private InputDevice _device_leftController;
- private InputDevice _device_rightController;
- private CharacterController _character;
- private Vector2 _inputAxis_leftController;
- private Vector2 _inputAxis_rightController;
- private GameObject _camera;
- private TextMeshPro textmeshPro;
- private float speed;
- private float gravity = -9.81f * 0.5f;
- [SerializeField]
- public bool snapTurningEnabled;
- [SerializeField]
- public int snapTurningAmount;
- private bool isSnapTurning;
- void Start()
- {
- _device_leftController = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand);
- _device_rightController = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
- _character = GetComponent<CharacterController>();
- _camera = GetComponent<XRRig>().cameraGameObject;
- TextMeshPro textmeshPro = GetComponent<TextMeshPro>();
- }
- void Update()
- {
- _device_leftController.TryGetFeatureValue(CommonUsages.primary2DAxis, out _inputAxis_leftController);
- _device_rightController.TryGetFeatureValue(CommonUsages.primary2DAxis, out _inputAxis_rightController);
- var inputVector_leftController = new Vector3(_inputAxis_leftController.x, 0, _inputAxis_leftController.y);
- var inputVector_rightController = new Vector3(_inputAxis_rightController.x, 0, _inputAxis_rightController.y);
- float targetAngle = Mathf.Atan2(_inputAxis_leftController.x, _inputAxis_leftController.y) * Mathf.Rad2Deg + _camera.transform.eulerAngles.y;
- var newDirection = Quaternion.Euler(0,targetAngle,0) * Vector3.forward;
- Vector3 fallDirection = Vector3.zero;
- if (inputVector_leftController.magnitude>0.2)
- {
- speed = inputVector_leftController.magnitude * 3.0f;
- }
- else
- {
- speed = 0f;
- }
- if (_inputAxis_rightController.x > 0.2f || _inputAxis_rightController.x < -0.2f)
- {
- if (snapTurningEnabled)
- {
- if (!isSnapTurning)
- {
- transform.Rotate(Vector3.up * snapTurningAmount * Mathf.Sign(_inputAxis_rightController.x));
- isSnapTurning = true;
- }
- }
- else
- {
- transform.Rotate(Vector3.up * _inputAxis_rightController.x);
- }
- }
- else
- {
- if (_inputAxis_rightController.x <= 0.2f && inputVector_rightController.x >= -0.2f)
- {
- isSnapTurning = false;
- }
- }
- if (_character.isGrounded)
- {
- fallDirection.y = Mathf.Max(fallDirection.y, 0);
- if (_inputAxis_rightController.y > 0.6f)
- {
- fallDirection.y += 100f * -gravity;
- }
- }
- else
- {
- fallDirection.y += gravity;
- }
- textmeshPro.text = "Hello World";
- _character.Move(newDirection * Time.deltaTime * speed);
- _character.Move(Vector3.up * fallDirection.y * Time.deltaTime);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment