1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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;
- }
- }
- }
- }
- }
|