- Home /
Troublesome collision detection when changing rigidbody.velocity directly
Setup:
Car is a plane with a rigidbody and box collider.
Pickup item is a capsule with a capsule trigger collider
The car has a script which adds relative force (using Forcemode.acceleration) and then runs the code below in FixedUpdate() to kill the sideways velocity if the car is not drifting.
Issue:
Code works fine, except for this annoying slightly rare bug where if you head towards a pickup without drifting you will pickup an item 1 unit before you hit it and sometimes you'll pick up everything in a line in front of you, even if it's far away.
I believe it is the following code that creates the issue, because I could imagine that the physics engine does some magic regarding adding forces before it gets to kill the velocity.
Vector3 localVelocity = transform.InverseTransformDirection(rigidbody.velocity);
localVelocity = new Vector3(localVelocity.x * drift, 0, localVelocity.z);
rigidbody.velocity = transform.TransformDirection(localVelocity);
I've totally run out of ideas, I do not have a clue how to fix this. Please, if you are willing and able, shine some light upon the issue could you? :)
I'm sorry if my explanation is difficult to understand, if it's not understandable in the slightest, please tell me and I'll attempt to reword it.
Thanks in advance.
Your answer
![](https://koobas.hobune.stream/wayback/20220613093239im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
[SIMPLE] Not loose speed when destroying colliding object 1 Answer
RigidBody - GameObject moves but mesh stays! 1 Answer
Player Collide with Fast moving Rigidbody to cause Death? 1 Answer
Collision detections under specific conditions 0 Answers
The trigger enter detect fast moving object more accurate 2 Answers