You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
58 lines
1.5 KiB
3 years ago
|
using HTC.UnityPlugin.ColliderEvent;
|
||
|
using HTC.UnityPlugin.Utility;
|
||
|
using System.Collections;
|
||
|
using UnityEngine;
|
||
|
|
||
|
public class GravitySwitch : MonoBehaviour
|
||
|
, IColliderEventHoverEnterHandler
|
||
|
{
|
||
|
public Transform switchObject;
|
||
|
public bool gravityEnabled = false;
|
||
|
public Vector3 impalse = Vector3.up;
|
||
|
|
||
|
private bool m_gravityEnabled;
|
||
|
private Vector3 previousGravity;
|
||
|
|
||
|
public void SetGravityEnabled(bool value, bool forceSet = false)
|
||
|
{
|
||
|
if (ChangeProp.Set(ref m_gravityEnabled, value) || forceSet)
|
||
|
{
|
||
|
// change the apperence the switch
|
||
|
switchObject.localEulerAngles = new Vector3(0f, 0f, value ? 15f : -15f);
|
||
|
|
||
|
StopAllCoroutines();
|
||
|
|
||
|
// Change the global gravity in the scene
|
||
|
if (value)
|
||
|
{
|
||
|
Physics.gravity = previousGravity;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
previousGravity = Physics.gravity;
|
||
|
|
||
|
StartCoroutine(DisableGravity());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
gravityEnabled = m_gravityEnabled;
|
||
|
}
|
||
|
|
||
|
private void Start()
|
||
|
{
|
||
|
previousGravity = Physics.gravity;
|
||
|
SetGravityEnabled(gravityEnabled, true);
|
||
|
}
|
||
|
|
||
|
public void OnColliderEventHoverEnter(ColliderHoverEventData eventData)
|
||
|
{
|
||
|
SetGravityEnabled(!m_gravityEnabled);
|
||
|
}
|
||
|
|
||
|
private IEnumerator DisableGravity()
|
||
|
{
|
||
|
Physics.gravity = impalse;
|
||
|
yield return new WaitForSeconds(0.3f);
|
||
|
Physics.gravity = Vector3.zero;
|
||
|
}
|
||
|
}
|