Hey dear community,
I want to calculate the angle of a collision.

What do I know?
- the point where both Object 1 and Object 2 collide
- transform.position of Object 1 and Object 2
What do I need to know?
- the direction vector of Object 1
How do I want to do that?
1 - Find out the collision point
colPoint = Collision.contacts[0].point;
2 - Find out the position of Object 1 and the collision Point to get the vector from Object1 to collisiont point
heading = colPoint - object1.transform.position;
3 - find the orthogonal vector of “heading” with
tangent = Vector3.OrthoNormalize(heading, colPoint);
4 - and here it stops… I would like to know the movement vector to calculate the angle of tangent and movement vector
I know how to calculate the angle.
My idea is… but it doesnt work to make a “for - loop” that checks ever update or fixed update the positions between the updates. to calculate the movement vector. but that seems to be too intensive if I do that with several thousand objects at the same time.
is there a function in unity to get this vector? I didnt found yet. The only things I found where how to face an object in direction of movement. But the code and ideas they where introduced there doesnt help me.
Maybe I have an error in the way I think. Any idea?
I really would appreciate your help!
I don’t want to get a working code. Just an idea! ![]()
best wishes,
Christian
edit: SOLUTION:
var orthogonalVector = col.contacts[0].point - transform.position;
var collisionAngle = Vector3.Angle(orthogonalVector, rigidbody.velocity);