# Feature List

* **Centralized System:** By including a single singleton instance to your scene, you get access to all RSB features. You can write a single line of code to fire any type of bullet from anywhere in your scene. Use the included prefabs to create a first-person system out of the box, or include RSB in your scene and use it with your own systems!
* **Event Based System:** RSB works completely on events, so it becomes extremely easy to listen to bullet hit events, or bullet time events to trigger custom game code.
* **No Rigidbodies:** Bullets fired with RSB works completely with raycasts, meanwhile providing you with an extremely accurate real-life simulation precision. No objects being spawned, no rigidbodies are being fired. Thus, firing a bullet, even though it’s simulated by many physics factors, is extremely cheap.
* **Realistic Bullet Ballistics:** Bullets are affected by: gravity(bullet drop), air resistance (multiple drag models w/ adjustable coefficient), spin drift (barrel twist), wind speed, air pressure and of course time.
* **Bullet Properties & Presets:** By using Scriptable Objects, you can create a custom bullet of your own just with couple of clicks. You can adjust the bullet’s weight, diameter, drag coefficient and other physical properties if you want to simulate a specific type of a bullet. On top of that, RSB provides you with an extensive set of presets derived from real cartridges, such as 9mm, 7.62, 556, .338 rem, .40 ACP etc.
* **Custom UI:** An extensive set of custom UI tools to set up your own bullet properties, design-time trajectory simulator to visualize the bullet’s trajectory in a graph on Unity editor itself.
* **Surface Ballistics:** Bullet penetration and ricochet, based on bullet’s kinetic energy & velocity. Completely customizable interface to simulate various surfaces such as; wood, steel, metal, plastic etc. along with the presets of said surfaces.
* **Bullet Tracers:** Visualize your bullets, enable bullet tracers and define your tracer prefab to see your bullet’s trajectory.
* **In-game Trajectory Debugging:** Enable trajectory debugging to visualize the whole bullet trajectory with line renderers.
* **Dynamic Scope System:** A dynamic canvas based scope system showing bullet drops depending on the selected bullet as well as how the bullet will be affected by the wind.
* **Bullet Time Cameras:** A powerful custom UI based tool to create your own bullet time camera effects without writing a single line of code. 10+ bullet time camera presets are included. Additionally, RSB provides a robust API to write your own bullet time camera effects if desired.
* **Player Controller:** RSB includes an example first-person player controller ready to be used in your own projects along with a smooth first person camera.
* **Motion Controller:** On top of the player controller, RSB also includes a motion controller script to create head-bob effects, camera/gun swaying, effects to simulate breath sway and a weapon positioner system to handle the position of the weapon depending on the player state (running, walking, aiming etc.)
* **Weapon Controller:** RSB includes an example weapon controller with an ammunition counter ready to be used for any type of weapon, especially for a bolt-action sniper rifle.
* **Mobile Controls:** RSB is mobile ready, and includes example scenes demonstrating how mobile controls can be used with its FPS controller.
* **Full Demo Scenes:** Full demo scenes demonstrating all features of RSB are included.
* **And much more utilities!**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rsb.inanevin.com/introduction/feature-list.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
