This component shoots a projectile using object pooling. In short, it only instantiates a number of projectiles then reuses the already instantiated. This is good for performance. (more information here).
Play Mode: the projectile is spawned and launched Only once or continuously (Loop).
Cooldown: the time (in seconds) between two spawn events.
Force: the force that is applied to the projectile
Max Distance: projectile deactivates and returns to the pool after this distance even if it didn’t collide with anything.
Ammunition: you can limit how many times the launcher can shoot. 0 means unlimited ammo.
Stick on Collision: the projectile will stick to and move with the object it collides with. It disappears when the object pooler reuses it. Useful for arrows or darts.
Projectile: The script can handle multiple projectile prefabs. By default, it shoots the listed projectiles one by one, based on their order. Enable the Randomize option for random selection.
Pool Size: the script will instantiate only this amount of projectile from each prefab.
This component moves the projectile. It’s inherited from a Damage Source, so you can set the damage.
To create a projectile prefab to be used in the launcher, simply attach this script to a game object and save as a prefab in your Project folder.