- Home /
Rigidbody.MovePosition() is not working if transform.position is just changed
main question
This code works. ↓
private void FixedUpdate()
{
Vector3 newPosition = new Vector3(0, 1, 0);
GetComponent<Rigidbody>().MovePosition(newPosition);
}
This code not works. ↓
private void FixedUpdate()
{
Vector3 newPosition = new Vector3(0, 1, 0);
Vector3 oldPosition = transform.position;
transform.position = newPosition;
transform.position = oldPosition;
GetComponent<Rigidbody>().MovePosition(newPosition);
}
I tested in Unity 2019.4 and 2020.3.
So, it seems Rigidbody.MovePosition() will not work if transform.position is just changed. Why does this happen? What does the physics system do?
Another small problem and the reason for why I'm writing code above? ↓
I didn't use much physics in my project. I changed position by setting transform.position.
I learn some physics, and think Kinematic and Rigidbody2D.MovePosition() is proper for me.
The old code is about several hundred lines. It would take some time to replace transform.position with Rigidbody2D.MovePosition().
So I think I can do the following to save time:
[1]save initial position,
[2]use old code to change position (transform.position),
[3]save new position ,
[4]restore old position,
[5]and finally use Rigidbody2D.MovePosition(newPosition) to change position.
But it turns out I can't do this.
Any good idea?
I'm not sure, but it might be better to change rigidbody.position instead of transform.position.
Answer by EliasMiettinen · Aug 20, 2021 at 11:50 AM
You code will not work because you canno't set transform.position while you try move object with rigidbody. I think that it causes an conflict.
I set transform.position to a new postion and than back to the old position. That's somehow transform.position isn't moved. But, Rigidbody.MovePosition() not works then.
Your answer
Follow this Question
Related Questions
Is it possible to prevent parent rigidbody physics from effecting children rigidbodies? 1 Answer
My Player goes through the colliders even I used Rigidbody.MovePosition , Please help me !! 2 Answers
Rigidbody Position Changes don't work when moving. 0 Answers
Inconsistency in Rigidbody.MovePosition 0 Answers
Rigidbody.MovePosition not behaving as expected (possible bug?) 1 Answer