How to use:
Create a new BallisticProfile or use one of the provided. You can create them by right clicking create > Projectiles > Ballistic Profile. it takes in imperial units ( or you can do metric directly) with a Range (distance from starting point), Velocity (current velocity at the distance), and Drop (how far down from the starting direction downwards (this value should be positive)). I would recommend a step of around 200-250 units between each of the entries.
Create a SurfaceEffectProfile or use the provided (theres only the default assigned) by right clicking create > Projectiles > Surface Effect Profile. Theres a few ones by default you can add more in the script. each takes in a surface type, decal projector, impact audio clips, and a prefab for the vfx. Any obj that you want to do effects on, you have to add the Surface component. (just returns the type)
Add the projectile manager component to a gameObj in your scene, or use the provided prefab and assign the fields.
in your weapons script get a ref to the ProjectileManager, and make an int for the ballisticProfileId (this will be used to pass in the Fire() of the projectile manager).
Before firing you must register the ballistic profile with the manager by using RegisterBallisticProfile(BallisticProfile profile) you can do this in equip or start
When firing you call the projectileManager.Fire(Vector3 position, Vector3 direction, int profileId, float damage, float hitForce, float unpinRagdollAmount) (you can remove the unpin ragdoll, im using puppet master so i had it there. (everything else is commented out, just forgot about that)
There is a HandleImpact(int projectileIndex) method where you can do all the necessary things you would want to