Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        //Keep object in front of player
        if (currentlyHeldCube != null)
        {
            Vector3 forwardPlus = transform.position + transform.forward;
            currentlyHeldCube.transform.position = forwardPlus;
            currentlyHeldCube.transform.rotation = new Quaternion();
            //currentlyHeldCube.GetComponent<Rigidbody>().AddTorque(new Vector3(Random.Range(5f, 7f), Random.Range(5f, 7f), Random.Range(5f, 7f)), ForceMode.Impulse);
        }

        //Pickup object
        if (Input.GetMouseButtonDown(0) && !clicked && currentlyHeldCube == null)
        {
            clicked = true;
            Ray ray = new Ray(transform.position, transform.forward);
            Debug.DrawRay(transform.position, transform.forward);
            RaycastHit[] hits = Physics.RaycastAll(ray, 100f);

            //Get all possible hits
            foreach (var hit in hits)
            {
                GravityCube hitCube = hit.collider.GetComponent <GravityCube>();
                //Is this an object that can be managed by the forcefield gun?
                if (hitCube != null)
                {
                    currentlyHeldCube = hitCube;
                    return;
                }
            }
        }
        //Throw object
        else if (Input.GetMouseButtonDown(0) && !clicked && currentlyHeldCube != null)
        {
            Vector3 forwardForce = transform.forward;
            forwardForce.y += 0.35f;
            currentlyHeldCube.GetComponent <Rigidbody>().velocity = forwardForce * 15;
            //currentlyHeldCube.GetComponent<Rigidbody>().AddTorque(new Vector3(10f, 0f, 0f));
            currentlyHeldCube = null;
        }
        //drop
        else if (Input.GetMouseButtonDown(1) && !clicked && currentlyHeldCube != null)
        {
            Vector3 forwardForce = transform.forward;
            currentlyHeldCube.GetComponent <Rigidbody>().velocity = forwardForce * 1;
            currentlyHeldCube = null;
        }


        if (Input.GetMouseButtonUp(0) && clicked)
        {
            clicked = false;
        }
    }
Esempio n. 2
0
    void OnTriggerEnter(Collider collider)
    {
        if (collider.tag == "GravityCube" && !isPressed)
        {
            isPressed = true;
            GetComponent <Animator>().SetBool("IsPressed", isPressed);

            collider.GetComponent <Rigidbody>().AddForce(transform.up * (bounceBack ? bounceBackForce : 0));
            triggerables.ForEach((triggerable) => triggerable.trigger());
            lastTouchingCube = collider.GetComponent <GravityCube>();
        }
    }