33 lines
1.3 KiB
C#
33 lines
1.3 KiB
C#
using UnityEngine;
|
|
|
|
namespace Passer.Humanoid {
|
|
|
|
/// <summary>Have a humaonid grab objects from a distance</summary>
|
|
/// The Humanoid Telegrabber enables humanoids to grab objects
|
|
/// which are normally out of reach for the hands.
|
|
/// This Interaction Pointer should be used on a child of a HandTarget.
|
|
[HelpURLAttribute("https://passervr.com/documentation/humanoid-control/tools/telegrabber/")]
|
|
public class Telegrabber : InteractionPointer {
|
|
|
|
protected override void Awake() {
|
|
clickEvent.SetMethod(EventHandler.Type.OnStart, GrabObject);
|
|
base.Awake();
|
|
}
|
|
|
|
/// <summary>Grab the object currently in focus of the InteractionPointer</summary>
|
|
/// If current objectInFocus is a Rigidbody, this function will have the Humanoid hand
|
|
/// try to grab the object.
|
|
public void GrabObject() {
|
|
if (objectInFocus == null)
|
|
return;
|
|
|
|
HandTarget handTarget = transform.GetComponentInParent<HandTarget>();
|
|
if (handTarget == null)
|
|
return;
|
|
|
|
Rigidbody rigidbodyInFocus = objectInFocus.GetComponentInParent<Rigidbody>();
|
|
if (rigidbodyInFocus != null)
|
|
handTarget.GrabOrLetGo(rigidbodyInFocus.gameObject, false);
|
|
}
|
|
}
|
|
} |