- Home /
Holding objects when mouse button is pressed, dropping when released?
I'm making a first-person game and want to be able to pick up and hold objects when mouse button is pressed, and drop them when it's released.
I have parented an empty with a collider to my fps controller, and have this script that parents stuff to the empty when they collide. What I can't seem to figure out is how to make it so it only parents when mouse button is held down, and unparents when the button is released again. My guess would be something to do with the OnMouseDrag function, but with my limited scripting skills I couldn't get it to work.
Also, my current script makes it possible to hold as many objects as you want, but I'd like it to be limited to one. Any help is appreciated :)
This is my current code:
function OnCollisionEnter (hit: Collision) {
hit.transform.parent = transform;
hit.rigidbody.isKinematic = true;
hit.rigidbody.useGravity = false;
}
Answer by mcarriere · Sep 08, 2011 at 02:47 PM
Add two variables to your script that has your collider on it:
var lastTouched : GameObject;
var holding : bool = false;
In your OnCollisionEnter:
if (!holding)
{
lastTouched = hit.gameObject;
}
In your OnCollisionExit:
if (!holding && lastTouched == hit.gameObject)
{
lastTouched = null;
}
Then, in your Update(), you can do something like this:
if (Input.GetMouseDown(0) && lastTouched)
{
lastTouched.transform.parent = transform;
lastTouched.rigidbody.isKinematic = true;
lastTouched.rigidbody.useGravity = false;
holding = true;
}
else if (Input.GetMouseUp(0) && holding)
{
lastTouched.transform.parent = null;
lastTouched.rigidbody.isKinematic = false;
lastTouched.rigidbody.useGravity = true;
lastTouched = null;
holding = false;
}
I think something like this would work, I haven't tested the code (just wrote it here) and I primarily work in C#, so I'm not sure if those variable declarations are right.
Your answer

Follow this Question
Related Questions
Picking up and dropping objects with parenting 1 Answer
Rigidbody Position Changes don't work when moving. 0 Answers
Picking up Objects in a 2.5D game. Help! 1 Answer
looting an item 1 Answer
Pick up, drop and place tagged objects 0 Answers