In Unity 3D, I have a character with a swing animation. I want to detect the exact movment of sword collision so I can stop the swing motion and return to Idle. I am trying to achive this using several ways.
Method 1 – I have a collider & rigidbody combination for the sword where I can register onCollision event. ( This is the most accuracte but It misses the collision event most of the time, since anmations are somwhat fast ( even if slows down the animation to 0.3, there are random misses)
Method 2 – I am doing raycasting from sword hilt to the end of the blade, If something collide with the blade I register it has hit ( This all has the same problem of method one, but somewhat sucessfull – raycast if done in FixedUpdate function)
Method 3 – I have set of point aligned with the enemy blade and Players blade, So In every FixedUpdate event I calculate the distance between each points, If a distance threashold is reached, I take it as a hit. ( This is the most sucessful method but this register so many unrealistic hits)
For all 3 methods I have set proper collision detection for rigidbodies and fix update time is minimized
So, My question is there a better way to register meele weapon collisions at the excat collision time
Read more here: Source link