예제 #1
0
 public virtual void LetGoObject()
 {
     if (GrabbedObject == null)
     {
         return;
     }
     GrabbedObject.LetGo(GrabberVelocity * maxVelocity * 2.25f, this);
     GrabbedObject = null;
 }
예제 #2
0
 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);
        }