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; }
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; } }