- Home /
Pick up object
hey guys i have this script for picking up an object with rigidbody attatched to it .sing
System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class grab : MonoBehaviour
{
public GameObject item;
public GameObject tempParent;
private bool cangrab;
public Transform guide;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
GroundCheck();
if (Input.GetButtonDown("grab"))
{
GetComponent<ConstantForce>().force = new Vector3(20, 50, 0);
if (cangrab == true)
pickup();
}
else
GetComponent<ConstantForce>().force = new Vector3(0, 0, 0);
drop();
}
void GroundCheck()
{
RaycastHit hit;
float distance = 3f;
Vector3 dir = new Vector3(0,0,1);
if (Physics.Raycast(transform.position, dir, out hit, distance) && hit.transform.tag == "interactable")
{
cangrab = true;
}
else
{
cangrab = false;
}
}
void pickup()
{
item.GetComponent<Rigidbody>().useGravity = false;
item.GetComponent<Rigidbody>().isKinematic = true;
item.transform.position = guide.transform.position;
item.transform.rotation = guide.transform.rotation;
item.transform.parent = tempParent.transform;
}
void drop()
{
item.GetComponent<Rigidbody>().useGravity = true;
item.GetComponent<Rigidbody>().isKinematic = false;
item.transform.parent = null;
item.transform.position = guide.transform.position;
}
}
i dont know what am i doing wrong but the moment i press play the object directly transfer in the player hands..plz help me
Comment
Did you debugged the code?
find if the method pickup is ebeing executed, and why...
also make sure you have a button assigned to the "grab" key because you may have it set on mouse click or something so it grabs when you start the game.
Your script is not even supposed to compile since you have declared several functions inside Update
....