Assignment for RMIT Mixed Reality in 2020
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.

55 lines
1.4 KiB

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using VRTK;
  5. public class SmoothFollowBehaviour : MonoBehaviour
  6. {
  7. [Header("Base Settings")]
  8. [SerializeField]
  9. private Transform m_Target;
  10. [SerializeField]
  11. private float m_SmoothValue = 0.5f;
  12. [Header("Teleport")]
  13. [SerializeField]
  14. private bool m_snapOnTeleport = false;
  15. [SerializeField]
  16. private VRTK_BasicTeleport m_teleportScript;
  17. private void OnEnable()
  18. {
  19. if (m_teleportScript != null)
  20. m_teleportScript.Teleported += OnTeleport;
  21. }
  22. private void OnDisable()
  23. {
  24. if (m_teleportScript != null)
  25. m_teleportScript.Teleported -= OnTeleport;
  26. }
  27. void LateUpdate()
  28. {
  29. if (m_Target != null)
  30. {
  31. transform.position = Vector3.Lerp(transform.position, m_Target.position, m_SmoothValue);
  32. transform.rotation = Quaternion.Lerp(transform.rotation, m_Target.rotation, m_SmoothValue);
  33. }
  34. }
  35. void OnTeleport(object sender, DestinationMarkerEventArgs e)
  36. {
  37. if (m_snapOnTeleport)
  38. {
  39. transform.position = m_Target.position;
  40. transform.rotation = m_Target.rotation;
  41. }
  42. }
  43. }