ExtendRealityLtd / ExtendRealityLtd/VRTK
New Feature: VRTK_ObjectLerp (lerp an VRTK_InteractableObject on grab).
- Dominant language
- C#
- Stars
- 3.7k
- Forks
- 974
- PR merge metrics
- No merged PRs in 30d
Description
**Overview**
General idea is to add new functionality that smoothly animates an object into position when you grab it. This will be an optional / extra script that you can attach to an `VRTK_InteractableObject`, providing a slightly different mechanic and visual from the existing immediate grab.
**Code In-progress**
- Created a new script class called `VRTK_ObjectLerp` that smoothly handles the lerp position and rotation of an object over time.
- You can attach this script to an `VRTK_InteractableObject`, which then will set itself up to use the `VRTK_ObjectLerp`.
- When an object is grabbed by `VRTK_InteractGrab` this class checks on the grabbing `VRTK_InteractableObject` to see if there is a valid / configured `VRTK_ObjectLerp` available, and if the object is set to `lerpTransformOnGrab`.
- If the `VRTK_InteractableObject` is setup to lerp on grab, then rather than complete the grab as normal, the `VRTK_InteractGrab` method calls back to a new method on the `VRTK_InteractableObject` that will start the lerp to position, i.e. `StartLerpTransformOnGrab`.
- The `VRTK_InteractableObject` will then call the `VRTK_ObjectLerp` to start a coroutine for the lerp to position, i.e. `DoObjectTranslation`.
**Not yet done, to be confirmed:**
- Once the `DoObjectTranslation` method completes, callback / notify the `VRTK_InteractableObject` that it's done.
- The `VRTK_InteractableObject` then calls the `VRTK_InteractGrab` script to grab the object again. Only this time it will tell the `VRTK_InteractGrab` somehow that we don't need to lerp, just do a normal / immediate grab.
**Other things to consider, as per our chat on Slack:**
- What to do if the object is ungrabbed mid-way, before completion:
: Move the object back to the start position.
: Or if it's pass the half way point complete the lerp.
: Or just drop the object where it is.
: Perhaps a combination, could have settings to specificy what you want to happen.
- From @bddckr: "Should work with every grab mechanic, but I think currently some of these things take at least 1 frame, so would be visible. Maybe instantiate a temporary copy and turn of visibility and collisions etc.":
: Not sure I understand what this is referencing yet.. perhaps I'll see this issue once the base code I've explained above is working.
Contributor guide
Assessment
This issue has not been assessed yet.