Replace UltimateXR with HurricaneVR
This commit is contained in:
66
Assets/HurricaneVR/TechDemo/Scripts/DemoSlidingDoor.cs
Normal file
66
Assets/HurricaneVR/TechDemo/Scripts/DemoSlidingDoor.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using System.Collections;
|
||||
using HurricaneVR.Framework.Core.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace HurricaneVR.TechDemo.Scripts
|
||||
{
|
||||
public class DemoSlidingDoor : MonoBehaviour
|
||||
{
|
||||
public Rigidbody LeftDoor;
|
||||
public Rigidbody RightDoor;
|
||||
|
||||
public Transform Lock;
|
||||
public float LockRotateTime = 1;
|
||||
public float LockRotateAngles = 360;
|
||||
|
||||
public float OpenOffset = .5f;
|
||||
public float Speed = 1f;
|
||||
|
||||
public AudioClip OpenedClip;
|
||||
|
||||
private bool _opened;
|
||||
|
||||
|
||||
public void Start()
|
||||
{
|
||||
//this.ExecuteAfterSeconds(OpenDoors, 1);
|
||||
}
|
||||
|
||||
public void OpenDoors()
|
||||
{
|
||||
if (_opened)
|
||||
return;
|
||||
_opened = true;
|
||||
if(SFXPlayer.Instance) SFXPlayer.Instance.PlaySFX(OpenedClip, transform.position);
|
||||
StartCoroutine(OpenDoorRoutine());
|
||||
}
|
||||
|
||||
private IEnumerator OpenDoorRoutine()
|
||||
{
|
||||
var elapsed = 0f;
|
||||
var LockRotateSpeed = LockRotateAngles / LockRotateTime * Time.deltaTime;
|
||||
|
||||
|
||||
while (elapsed < LockRotateTime)
|
||||
{
|
||||
Lock.localRotation *= Quaternion.Euler(0f, 0f, LockRotateSpeed);
|
||||
yield return null;
|
||||
elapsed += Time.deltaTime;
|
||||
}
|
||||
|
||||
|
||||
elapsed = 0f;
|
||||
var time = OpenOffset / Speed + (2 * Time.fixedDeltaTime);
|
||||
while (elapsed < time)
|
||||
{
|
||||
yield return new WaitForFixedUpdate();
|
||||
|
||||
var next = Vector3.MoveTowards(LeftDoor.transform.position, LeftDoor.transform.parent.TransformPoint(new Vector3(-OpenOffset, 0f, 0f)), Speed * Time.fixedDeltaTime);
|
||||
LeftDoor.MovePosition(next);
|
||||
next = Vector3.MoveTowards(RightDoor.transform.position, RightDoor.transform.parent.TransformPoint(new Vector3(OpenOffset, 0f, 0f)), Speed * Time.fixedDeltaTime);
|
||||
RightDoor.MovePosition(next);
|
||||
elapsed += Time.fixedDeltaTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user