Example #1
0
    // Update is called once per frame
    void Update()
    {
        bendbool = true;
        RaycastHit hit;
        float      ScanningDistance = (transform.localScale.x / 2) + distance;
        Vector3    rayPosition;

        rayPosition = new Vector3(transform.position.x, transform.position.y + ScanningHeight, 0);
        Debug.DrawRay(rayPosition, transform.right * ScanningDistance, Color.red);
        if (Input.GetKeyDown(KeyCode.F))
        {
            if (Physics.Raycast(rayPosition, transform.right, out hit, ScanningDistance) && !curgrab)
            {
                if (hit.collider != null)
                {
                    if (hit.transform.GetComponentInChildren <SpringObject>() != null)
                    {
                        bendbool = hit.transform.GetComponentInChildren <SpringObject>().isBending;
                    }

                    Debug.Log(hit.collider.gameObject.name);
                    grabbedObject = hit.collider.GetComponent <CanGrabObject>();
                    if (null != grabbedObject && !grabbedObject.isGrab && bendbool)
                    {
                        grabbedObject.SendMessage("OnGrab", Player);
                        curgrab = true;
                        onGrab?.Invoke(grabbedObject);
                        return;
                    }
                }
            }
            if (null != grabbedObject && grabbedObject.isGrab)
            {
                grabbedObject.SendMessage("OnDrop", Player);
                curgrab = false;
                onDrop?.Invoke(grabbedObject);
                grabbedObject = null;
            }
        }
    }
Example #2
0
 private void OnDrop(CanGrabObject obj)
 {
     animator.SetBool("Grabbing", false);
     dropEvent?.Invoke();
 }
Example #3
0
 private void OnGrab(CanGrabObject obj)
 {
     animator.SetBool("Grabbing", true);
     grabEvent?.Invoke();
 }