public virtual void LetGoObject() { if (GrabbedObject == null) { return; } GrabbedObject.LetGo(GrabberVelocity * maxVelocity * 2.25f, this); GrabbedObject = null; }
public virtual void GrabObject() { if (RayCastBehaviourRef.HighLightedObject == null) { return; } GrabbedObject = RayCastBehaviourRef.HighLightedObject; GrabbedLocation = RayCastBehaviourRef.HitLocation; GrabbedObject.Grabbed(this); }
private void Update() { RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, MaxGrabDistance)) { if (hit.transform.GetComponent <GrabbableBehaviour>() || hit.transform.gameObject != HighLightedObject?.gameObject) { HitLocation = hit.point; HighLightedObject = hit.transform.GetComponent <GrabbableBehaviour>(); HighLightedObject?.HighLight(true); } } else { HighLightedObject?.HighLight(false); HighLightedObject = null; } LineRendererRef.enabled = IsDrawingLine; LineRendererRef.SetPosition(0, transform.position); LineRendererRef.SetPosition(1, (IsDrawingLine) ? transform.position + (transform.forward * MaxGrabDistance) : transform.position); }