- Home /
cant pickup object more than 1
So i made a script that player can pick up and drop item/object. But when my player has a item in his hands(game object) and then want to pickup another item it's kinda wrong. So, my player carrying 2 items at the same time and when i drop the second items, i cant drop the first items in his hands. When my player carry 1 item, i want that he cant pick another item or drop the first item first and then pick up the second item automatically.
here my script :
public class PickupObject : MonoBehaviour { public GameObject myHands; //reference to your hands/the position where you want your object to go public GameObject dropObject; bool canpickup; //a bool to see if you can or cant pick up the item GameObject ObjectIwantToPickUp; // the gameobject on which you collided with bool hasItem; // a bool to see if you have an item in your hand // Start is called before the first frame update void Start() { canpickup = false; //setting both to false hasItem = false; }
// Update is called once per frame
void Update()
{
if (canpickup == true) // if you enter thecollider of the objecct
{
if (Input.GetKeyUp(KeyCode.E)) // can be e or any key
{
hasItem = true;
ObjectIwantToPickUp.GetComponent<Rigidbody>().isKinematic = true; //makes the rigidbody not be acted upon by forces
ObjectIwantToPickUp.transform.position = myHands.transform.position; // sets the position of the object to your hand position
ObjectIwantToPickUp.transform.parent = myHands.transform; //makes the object become a child of the parent so that it moves with the hands
Debug.Log("Pickup");
}
}
if (Input.GetKeyUp(KeyCode.Q) && hasItem == true) // if you have an item and get the key to remove the object, again can be any key
{
hasItem = false;
ObjectIwantToPickUp.GetComponent<Rigidbody>().isKinematic = false; // make the rigidbody work again
ObjectIwantToPickUp.transform.position = dropObject.transform.position;
ObjectIwantToPickUp.transform.parent = null; // make the object no be a child of the hands
Debug.Log("Drop");
}
}
private void OnTriggerEnter(Collider other) // to see when the player enters the collider
{
if (other.gameObject.tag == "object") //on the object you want to pick up set the tag to be anything, in this case "object"
{
canpickup = true; //set the pick up bool to true
ObjectIwantToPickUp = other.gameObject; //set the gameobject you collided with to one you can reference
}
}
private void OnTriggerExit(Collider other)
{
canpickup = false; //when you leave the collider set the canpickup bool to false
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613034945im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Select Animations Freezing on First Frame 1 Answer
My Unity 5.1.1 crashes right at the startup 1 Answer
Setting parent causing unknown problems 3 Answers
Screen Orientation on iOS 0 Answers