Can the update function calculate collisions?

I have an arrow hitting the target with an OnCollisionEnter function, which doesn't always stop the arrows or they stop in mid air behind the target or at a weird angle. To stop the arrow I used a Destroy(collision.rigidbody); method. I think the problem is the arrow is moving too fast. Is it possible to run a collision in the Update function so it's checking for the collision more often?

Thanks for any help!

You can increase the rate at which the Fixed Updates occur, it would not be very good though since it takes CPU power and it won't always stop it from happening (if you still want to do it you can change the Fixed Update rate in the Project Settings-->Time). A better option would be to use a script which checks if it should have hit something the last frame (using raycasting), there is such a script at the wiki and you can find it here: http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings

Why are you destroying the rigidbody of the object? That would only cause it to stop instantly, shouldn't you destroy the gameObject instead?

This might be a dumb answer, but did you remember to change the rigidbody collision detection from Discrete to Continuous?