- Home /
Pickup item and move with it
For a project, my coursemate and I are developing a game which involves four characters on a local multiplayer getting a treasure chest from the beginning of the level to the end. We are experiencing issues with the pickup up of the chest and do not see a way to give each player the ability to pick up and carry the chest without using tags(a camera script we use relies on tags).
Here is the code we have at the moment
var SpawnTo : Transform; //your hand for example, attack an object to your character that you want the position of what you picked up to go to
var Object1 : Transform; //what your picking up, the object that you want to move
var dist = 5; //distance at which you can pick things up
private var isHolding = false;
function Update () {
if(Input.GetKeyDown(KeyCode.Q)){ //if you press 'q'
if(Vector3.Distance(transform.position, Object1.position) < dist) //if distance is less than dist variable
{
isHolding = !isHolding; //changes isHolding var from false to true
}
}
if(isHolding == true){
Object1.rigidbody.useGravity = false; //sets gravity to not on so it doesn't just fall to the ground
Object1.parent = SpawnTo; //parents the object
Object1.transform.position = SpawnTo.transform.position; //sets position
Object1.transform.rotation = SpawnTo.transform.rotation; //sets rotation
}
else{ //if isHolding isn't true
SpawnTo.transform.DetachChildren(); //detach child (object) from hand
Object1.rigidbody.useGravity = true; //add the gravity back on
}
}
When the script partially works but the character movement when they have the chest is very glitchy.
What part of the code is incorrect and how do we expand it to more than one player without using tags?
Any help would be much appreciated, thanks.
$$anonymous$$ake the rigidbody kinematic, too- stop it from moving weirdly.
Hey,
Thanks for the advice. Tried it and it doesn't make a difference unfortunately. The movement is still totally mental, kinematic or not :\
Answer by dannyskim · Dec 04, 2011 at 04:48 AM
I guess there's a possibility of your objects constantly colliding if you're setting the position through update. The colliders ( assuming there are any ) may be overlapping and causing the glitches and even breaks from code because of physics processing.
Are you using colliders? If you are, have you set them to ignore each other?
Yes, you should set up collision layers for every object involved, and make sure that the box doesn't interact with the players when it's being carried. I recently finished a largish multiplayer project with similar game mechanics, and I think at the end there I had something like 15 different layers for specific kinds of objects, all of which were carefully set up to interact properly. Bad interactions on the collision matrix were probably responsible for most of the more hilariously obvious bugs (like ragdolls flying into the sky).
Yes! That was it. Brilliant. Thanks for the help. I just turned collision off for now but will use layers soon. I fixed the multiplayer issue by adding extra variables. Pretty dirty program$$anonymous$$g but does the trick!
Glad you got it fixed. Like syclamoth suggested, using the Physics collision matrix in the project settings menu from the Edit menu is extremely handy. That way, you don't have to code all your layer ignores.
Your answer
Follow this Question
Related Questions
Item Drop Help 1 Answer
item pickup not working after an item is used. 0 Answers
Same prefab getting instantiated for the different items 0 Answers
MissingReferenceException Help Please! 0 Answers
How to pick / drop object 1 Answer