- Home /
placing an object to it's initital position after picked up.
Hello all,
I know this issue has been talked about a lot and yet I can't implement via scripting.
I use a script to pickup an object, via ray casting and I can with that script, drop the object in the cart, but I want to be able to place the object back to it's initial position (on a shelf).
All the objects has rigidbody, box collider, and another script "pickupable".
What should be done is to make a variable of the initial position, and then send it back using transform probably. But what kind of variable? Transform? Vector3? how can I send it back, whit a raycast? I'm using C#.
Thank you.
I do not know if you have tried this or not:
make a vector 3 variable get the global position of the pickable object save it into vector 3 just before picking and after done change the global position of the pickable object to the saved value in vector 3.
I've added these lines: Vector3 initialPlace; initialPlace = new Vector3(transform.position.x, transform.position.y);
But it wouldn't work.
after done change the global position of the pickable object to the saved value in vector 3.
What do you mean?
This is how the pick function works:
void carry(GameObject o)
{ //carry gameObject named o.
o.transform.position = Vector3.Lerp(o.transform.position, mainCamera.transform.position + mainCamera.transform.forward * distance, Time.deltaTime * smooth); //this is for carrying
}
void pickup()
{
if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.E))
{
int x = Screen.width / 2;
int y = Screen.height / 2; //this is the place on the screen
Ray ray = mainCamera.GetComponent<Camera>().ScreenPointToRay(new Vector3(x, y));
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Pickupable p = hit.collider.GetComponent<Pickupable>();
if (p != null)
{
carrying = true;
carriedObject = p.gameObject;
p.gameObject.GetComponent<Rigidbody>().is$$anonymous$$inematic = true; //why I need is$$anonymous$$inematic?
}
}
}
}
void checkDrop()
{
if (Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.E))
{
dropObject();
}
}
void dropObject()
{
carrying = false;
carriedObject.GetComponent<Rigidbody>().is$$anonymous$$inematic = false;
carriedObject = null;
}
void Start(){ // Just saving the intial position of the gameObject. initialPlace = transform.position; }
// I am takling you can call this fucntion when you need to place your game object on //older postio. void placeTheObjectAtPreviousPsition(){
// Add Your Stuff
transform.position = initialPlace;
}
Your answer
Follow this Question
Related Questions
Code working on wrong axis. 1 Answer
Locking gameobject to rotating floor 0 Answers
Problem with C# "if" statement? 2 Answers
Multiple Cars not working 1 Answer
Check y transform. Or limit(stop). 0 Answers