# Head on collision vs skinning the wall.

 0 Trying to get the force of an impact in a low altitude racing game. I wish to make my collision detection more robust. RIght now I get the same magnitude returned regaurdless of the colliding objects attack angle. I am using: ``````function OnCollisionEnter(collision : Collision) { if (collision.relativeVelocity.magnitude > 16){ // go boom } else { // make sparks } } `````` It detecects collision and things blow up well. However when a collision is very shallow in angle it is still detected as big collision, not as sliding down the wall. I recieve the same relativeVelocity.magnitude for hitting a wall head on as for glancing it with at a very light attack angle. How should someone calculate collision magnitude adjusted for the angle of the incoming force. EDIT: this is working, thanks to efge's answer: ``````function OnCollisionEnter(collision : Collision) { var tempCount=0; var angleTot=0; var damageTot=0; for (var contact : ContactPoint in collision.contacts) { // finds the avrg of the difference of the angles of // the Contact points from our transform's forward tempCount++; var angle = Vector3.Angle(contact.normal, transform.forward); angleTot+=angle; damageTot+=collision.relativeVelocity.magnitude; } Debug.Log ("avg angle:"+angleTot/tempCount+" avg force:"+damageTot/tempCount+" Adjusted force:"+damageTot/tempCount*angleTot/tempCount/180); //blow up or not based on adjusted force } `````` it might be better to calculate baced on traveling direction (forces) than player rotation, but this feels good. more ▼ asked Mar 17 '11 at 10:24 AM Mofy 23 ● 1 ● 2 ● 8 add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 You could compare the ContactPoint.normal with the driving direction (or the velocity vector of the rigidbody). Edit: In the function OnCollisionEnter you could use Collision.relativeVelocity and ContactPoint.normal. Maybe you have to normalize the vectors to set its length to 1.0. more ▼ answered Mar 18 '11 at 02:29 PM efge 5.1k ● 5 ● 14 ● 38 Thank you, this makes sense, I will post the code here after I get it working. Mar 21 '11 at 11:20 AM Mofy add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

By Email:

Topics:

x2485
x286
x248
x82
x58

asked: Mar 17 '11 at 10:24 AM

Seen: 1272 times

Last Updated: Mar 27 '11 at 04:02 PM