public void OnRelease()
 {
     if (currentGrabItem != null)
     {
         currentGrabItem.Release(currentInput);
         currentGrabItem = null;
         CallAnimationTrigger?.Invoke("", null);
         PlayAudio?.Invoke("Release", 0f);
     }
 }
Esempio n. 2
0
    // Update is called once per frame
    private void Update()
    {
        if (Input.GetKey(UpKeyCode))
        {
            rigidbody.AddForce(Vector3.up * Thrust);
        }
        if (Input.GetKey(RightKeyCode))
        {
            rigidbody.AddForce(Vector3.right * Thrust);
        }
        if (Input.GetKey(DownKeyCode))
        {
            rigidbody.AddForce(Vector3.down * Thrust);
        }
        if (Input.GetKey(LeftKeyCode))
        {
            rigidbody.AddForce(Vector3.left * Thrust);
        }
        if (Input.GetKey(ForwardKeyCode))
        {
            rigidbody.AddForce(Vector3.forward * Thrust);
        }
        if (Input.GetKey(BackwardKeyCode))
        {
            rigidbody.AddForce(Vector3.back * Thrust);
        }

        if (Input.GetKeyDown(GrabKeyCode))
        {
            if (isGrabbing)
            {
                currentlyGrabbed.Release();
                isGrabbing       = false;
                currentlyGrabbed = null;
                animator.SetBool("grab", false);
            }
            else
            {
                Grab();
            }
        }

        /*if (grabbedGameObject != null && !grabbedGameObject.GetComponent<WireClass>().enabled)
         * {
         *  animator.SetBool("grab", false);TODO
         * }*/
    }
Esempio n. 3
0
    void Release()
    {
        anim.SetBool("Grab", false);
        handState        = HandState.Free;
        gameObject.layer = LayerMask.NameToLayer("HandFree");

        if (grabbedObj != null)
        {
            grabbedObj.Release();
            Vector2 vel = rb.velocity;
            if (vel.magnitude > 15f)
            {
                vel = vel.normalized * 15f;
            }

            var grabbedMono = grabbedObj as MonoBehaviour;
            grabbedMono.gameObject.GetComponent <Rigidbody2D>().AddForce(vel, ForceMode2D.Impulse);
        }
    }
Esempio n. 4
0
    // Update is called once per frame
    private void Update()
    {
        if (Input.GetKey(UpKeyCode))
        {
            rigidbody.AddForce(Vector3.up * Thrust);
        }
        if (Input.GetKey(RightKeyCode))
        {
            rigidbody.AddForce(Vector3.right * Thrust);
        }
        if (Input.GetKey(DownKeyCode))
        {
            rigidbody.AddForce(Vector3.down * Thrust);
        }
        if (Input.GetKey(LeftKeyCode))
        {
            rigidbody.AddForce(Vector3.left * Thrust);
        }


        if (Input.GetKey(ForwardKeyCode))
        {
            rigidbody.AddForce(Vector3.forward * Thrust);
        }
        if (Input.GetKey(BackwardKeyCode))
        {
            rigidbody.AddForce(Vector3.back * Thrust);
        }

        if (Input.GetKeyDown(GrabKeyCode))
        {
            if (isGrabbing)
            {
                currentlyGrabbed.Release();
            }
            else
            {
                Grab();
            }
        }
    }
Esempio n. 5
0
    public void IExecute()
    {
        if (grabbedBody == null)
        {
            RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

            if (hit.collider != null && hit.collider.gameObject.TryGetComponent <IGrabbable>(out grabbed))
            {
                if (Vector2.Distance(player.position, hit.collider.transform.position) < maxRange)
                {
                    grabbedBody   = hit.collider.gameObject.GetComponent <Rigidbody2D>();
                    grabbedObject = hit.collider.transform;
                    previousLayer = grabbedObject.gameObject.layer;
                    grabbedObject.gameObject.layer = 11; //Magic number for Grabbed Object layer
                    grabbed.Grab();
                    var grabEffect = grabbed.GetGrabEffect();
                    if (grabEffect.Item1 == Grabbable.GrabEffect.SlowDown)
                    { //This is dumb and should be changed
                        Movement movement = player.gameObject.GetComponent <Movement>();
                        Debug.Log(grabEffect.Item2);
                        uneditedSpeed  = movement.speed;
                        movement.speed = uneditedSpeed * (1 / grabEffect.Item2);
                    }
                }
            }
        }
        else
        {
            var grabEffect = grabbed.GetGrabEffect();
            if (grabEffect.Item1 == Grabbable.GrabEffect.SlowDown)
            {
                player.gameObject.GetComponent <Movement>().speed = uneditedSpeed;
            }
            grabbedObject.gameObject.layer = previousLayer;
            grabbedBody   = null;
            grabbedObject = null;
            grabbed.Release();
        }
    }