- Home /
Keeping momentum with rigid bodies.
So i made a script for moving a rigidbody via the mouse, and a problem i seem to be having is when i let go it doesn't keep all the momentum, instead it just stops in mid air and then starts falling. I wanted to ask what i should use to move to the position of the mouse, right now i am using rigidbody.moveposition, but as i said that doesn't want to keep the momentum when the mouse lets go.
My script:
float d;
public Rigidbody2D rigid;
public bool held; //stores whether currently holding the object
Vector3 localHeldPosition; //stores where we grabbed it
void Update ()
{
d = Input.GetAxis("Mouse ScrollWheel");
if(held == true && d > 0f){
transform.Rotate(Vector3.forward * d * 7);
}else if(held == true && d < 0f){
transform.Rotate(Vector3.forward / d / 7);
}
}
void OnMouseDrag ()
{
//get mouse position
Vector2 screenMousePosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
//convert to world space (on z=0 plane)
Vector3 worldMousePosition = Camera.main.ScreenToWorldPoint(screenMousePosition);
worldMousePosition.z = 0; //this is to make sure the position stays on the z=0 plane
//if weren't holding last frame, remember where we grabbed it in local space
if(!held)
{
localHeldPosition = transform.InverseTransformPoint(worldMousePosition);
held = true;
}
//calculate the current position of the grabbed point in world space
Vector3 worldHeldPosition = transform.TransformPoint(localHeldPosition);
//calculate the 'error' - i.e. how much we need to move that point to fix things
Vector3 worldDelta = worldMousePosition-worldHeldPosition;
//fix it just by moving out object
rigid.MovePosition(transform.position + worldDelta);
held = true;
}
void OnMouseUp()
{
held = false;
}
Another problem i had was that when i hold the object up in the air, drop it and then grab it while it is falling, then let go it keeps the speed it had when i grabbed it.
Thank You.
Your answer
Follow this Question
Related Questions
How to get collision force, not relative velocity? 1 Answer
Calculating speed of rigidbody? 1 Answer
Gravitational pull without losing speed 1 Answer
Rigidbody magnitude 3 Answers
Speed based on distance 1 Answer