Exemple #1
0
    public void Release()
    {
        //Make hands reappear
        ShowHands();

        if (scalingObject != null)
        {
            scalingObject = null;
            return;
        }
        if (!Grabbed)
        {
            return;
        }
        Grabbed = false;

        //no other controller grabs it, so you can do things, else ignore.
        if (grabbedObject.transform.parent == transform)
        {
            grabbedObject.transform.parent = null;

            //update color panel
            HSVColorPanel.instance.SelectedObject = null;

            //if collides with head, attach it, otherwise fall on ground
            if (grabbedObject.GetComponent <HairObject>().AttachedAtHead)
            {
                //play release at head sound
                AudioManager.instance?.Play3DSound(AudioEffect.releaseWithHead, 1, transform.position);

                //grabbedObject.GetComponent<Rigidbody>().isKinematic = false;
                grabbedObject.GetComponent <HairObject>().Grabbed = false;
                grabbedObject.GetComponent <HairObject>().ToggleRigidBody(false);

                grabbedObject.transform.parent = grabbedObject.GetComponent <HairObject>().ParentTransform;
                //grabbedObject.GetComponent<Rigidbody>().collisionDetectionMode = CollisionDetectionMode.Discrete;
            }
            else
            {
                //play release without head sound
                AudioManager.instance?.Play3DSound(AudioEffect.releaseWithoutHead, 1, transform.position);

                //Throw Physics Shit
                Vector3 throwVector = grabbedObject.transform.position - currentGrabbedLocation;
                //grabbedObject.GetComponent<Rigidbody>().isKinematic = false;
                grabbedObject.GetComponent <HairObject>().ToggleRigidBody(true, false);
                grabbedObject.GetComponent <Rigidbody>().AddForce(throwVector * 75, ForceMode.Impulse);
                //grabbedObject.GetComponent<Rigidbody>().velocity = capsule.GetComponent<Rigidbody>().velocity + controllerVelocityCross;
            }
        }
        grabbedGS = null;
    }
Exemple #2
0
    public void Grab()
    {
        Debug.Log(" Grab hand!");

        if (Grabbed)
        {
            return;
        }



        //check object with tag
        GameObject focusedObject = SphereCastedObject(Tags.GRABABLE, transform);

        if (focusedObject == null)
        {
            scaleCheck(); return;
        }

        //check if spawnerobject
        if (focusedObject.GetComponent <spawner>())
        {
            focusedObject = focusedObject.GetComponent <spawner>().spawnObject();
        }

        //apply variavble and parent
        grabbedObject = focusedObject;
        Grabbed       = true;
        grabbedObject.transform.parent = transform;

        //play grab sound
        AudioManager.instance?.Play3DSound(AudioEffect.grabProp, 1, transform.position);

        //make hand dissapear
        HideHands();

        //add haircomponent
        if (grabbedObject.GetComponent <HairObject>() == null)
        {
            grabbedObject.AddComponent <HairObject>();
        }


        grabbedObject.GetComponent <HairObject>().ToggleRigidBody(true, true);
        grabbedObject.GetComponent <HairObject>().Grabbed = true;
        grabbedObject.GetComponent <HairObject>().Hover   = true;

        grabbedGS = grabbedObject.GetComponent <GrabbableScripts>();

        if (grabbedGS != null)
        {
            otherHand.scaleMin = grabbedGS.minScaleValue;
            otherHand.scaleMax = grabbedGS.maxScaleValue;

            scaleMin = grabbedGS.minScaleValue;
            scaleMax = grabbedGS.maxScaleValue;
        }
        else
        {
            otherHand.scaleMin = 0.1f;
            otherHand.scaleMax = 0.5f;
            scaleMin           = 0.1f;
            scaleMax           = 0.5f;
        }

        //update slider
        if (grabbedObject.GetComponent <ATM>() == null)
        {
            HSVColorPanel.instance.SelectedObject = grabbedObject;
        }
    }