55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
|     }
 | |
| }
 |