namespace VRTK.Examples { using UnityEngine; public class HandLift : VRTK_InteractableObject { [Header("Hand Lift Options", order = 4)] public float speed = 0.1f; public Transform handleTop; public Transform ropeTop; public Transform ropeBottom; public GameObject rope; public GameObject handle; private bool isMoving = false; private bool isMovingUp = true; public override void OnInteractableObjectGrabbed(InteractableObjectEventArgs e) { base.OnInteractableObjectGrabbed(e); isMoving = true; } protected override void Update() { base.Update(); if (isMoving) { Vector3 movePosition = (isMovingUp ? Vector3.up : Vector3.down) * speed * Time.deltaTime; handle.transform.position += movePosition; Vector3 scale = rope.transform.localScale; scale.y = (ropeTop.position.y - handle.transform.position.y) / 2.0f; Vector3 midpoint = ropeTop.transform.position; midpoint.y -= scale.y; rope.transform.localScale = scale; rope.transform.position = midpoint; if((!isMovingUp && handle.transform.position.y <= ropeBottom.position.y) || (isMovingUp && handle.transform.position.y >= handleTop.position.y)) { isMoving = false; isMovingUp = !isMovingUp; } } } } }