55 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.XR.Interaction.Toolkit;
public class GravityHandler : MonoBehaviour
{
public InputActionReference teleportAction;
public XRInteractorLineVisual TeleportRayLine;
public ActionBasedContinuousMoveProvider defaultGravity;
public bool isInSpace = false;
private void Awake()
{
teleportAction.action.Enable();
teleportAction.action.performed += OnTeleport;
}
private void Update()
{
if (isInSpace)
{
defaultGravity.useGravity = false; // Disable default gravity
}
else
{
defaultGravity.useGravity = true; // Enable default gravity
Physics.gravity = Vector3.down * 9.81f; // Reset to normal gravity
}
}
private void OnTeleport(InputAction.CallbackContext context)
{
if (isInSpace)
{
Quaternion newRotation = TeleportRayLine.reticle.transform.rotation;
Debug.Log("Teleport detected! Adjusting gravity... New rotation is: " + newRotation.eulerAngles);
//AdjustGravity(newRotation);
}
}
public void AdjustGravity(Quaternion rotation)
{
Vector3 newGravityDirection = rotation * Vector3.down; // Rotate gravity based on teleport direction
Physics.gravity = newGravityDirection.normalized * Physics.gravity.magnitude;
Debug.Log("New Gravity: " + Physics.gravity);
}
private void OnDestroy()
{
teleportAction.action.Disable();
teleportAction.action.performed -= OnTeleport;
}
}