- Home /
bullets flying through enemy
my bullets are flying through the enemy because they go too fast. if i set the bullets to a low speed, this is not a problem. also the bullets fly through pretty much every other object when they are going fast. how do i fix this?
also another small problem, when i set the bullets to go fast they spawn a couple feet ahead of the barrel of the gun, can i fix this?
Answer by ryanmillerca · Nov 16, 2017 at 12:51 AM
This is a very common problem with bullet physics, and usually a result of relying on OnCollisionEnter / OnTriggerEnter to detect collision. These methods aren't well suited to fast objects like bullets. A faster and more reliable solution is to remove the collision from the bullet itself and instead use a Ray to test if something is in the bullet's way. There's https://docs.unity3d.com/ScriptReference/Physics.Raycast.html for simple 'laser pointer' style tests, and https://docs.unity3d.com/ScriptReference/Physics.SphereCast.html if you need some 'thickness' to your collision test.
thanks for the response, but i easily fixed this by going to "collision detection" in the bullets rigidbody and selecting "continuous" and it fixed it. now the bullet will always collide with objects no matter the speed (:
Well that's certainly easier! Nice one. If you're ever looking for a more optimized solution, come back and try out my answer again :)
Hello there,
Using a raycast here is the right answer. Setting the detection to continuous helps to some extent, but has its limits and takes a heavier toll on performances.
Don't hesitate to come back to that solution if you feel like you need to. Cheers,
~LegendBacon
Your answer
Follow this Question
Related Questions
Running into corners causes player to slowly rise 3 Answers
Raycasting colliders moved by Mechanim animation? 0 Answers
first person shooter help 2 Answers
how to make enemies have health and get damaged by bullets 3 Answers
How to make my Character run through walls with the use of the Character Controller component 1 Answer