OnCollisionStay & FixedUpdate

I think i have a sync problem with OnCollisionStay & FixedUpdate.

I need local contact points. I am using transform.InverseTransformPoint

When i use this script on 4 moving rigid, 3 of them works successfully. But one of them calculating old (one frame ago) contact points with new position (center of transform changed so locals are wrong).

How can i solve this problem?

Problem solved.
Store last position: Add Below:
`

private Vector3 lastrigidposition;

void Start() {
	lastrigidposition = transform.position;
}

void FixedUpdate() {
	lastrigidposition = transform.position;
}

`
Now you only need to check is contact possible on its bounds.

For example: For Sphere Collider:
if local positon magnitude greater then sphere Radius we need to use lastrigidposition because a sphere can only collide around Radius.

transform.InverseTransformPoint(position) equal position - transform.point

So oldlocal = position - lastrigidposition;

Dont forget there can be multiple contacting rigidbody. Maybe you need to change other rigidbody calculations too. So maybe you need a few more variables.

If you drawrays you will see two different positions:

`

void OnCollisionStay(Collision collisionInfo) {
	Debug.DrawRay(transform.position, transform.up * 4, Color.green);
	Debug.DrawRay(lastrigidposition, transform.up * 4, Color.white);
}

`