コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetAxis(grabAxis) > 0.5)
        {
            isGrabButtonHeld = true;
        }
        else
        {
            if (wasGrabJustHeld)
            {
                if (currentGrabbable != null && currentGrabbable.GetHand() == this.gameObject)
                {
                    currentGrabbable.EndGrab();
                    previousGrabbable = currentGrabbable;
                    currentGrabbable  = null;
                }
            }
            isGrabButtonHeld = false;
            wasGrabbaleCheckJustTriggered = false;
            wasGrabJustHeld = false;
        }

        //only check for grabbable when trigger has just been held down
        if (isGrabButtonHeld == true && wasGrabbaleCheckJustTriggered == false)
        {
            wasGrabJustHeld = true;
            wasGrabbaleCheckJustTriggered = true;
            //do grabbable checks
            Debug.Log("Checking for grabbable");
//			ray = new Ray (transform.position, transform.forward);
//			if (Physics.SphereCast(ray,radius, out hit, range)){
//				currentGrabbable = hit.collider.gameObject.GetComponent<Grabbable> ();
//				if (currentGrabbable != null) {
//					currentGrabbable.StartGrab ();
//				}
//			}
            if (currentGrabbable != null && currentGrabbable.IsGrabbed == false)
            {
                currentGrabbable.StartGrab(this.gameObject);
            }
        }
    }