Infinity PBR by Magic Pig Games
  • Infinity PBR Documentation
  • Game Modules 4
    • ➡️Quick Start
    • 📽️Video Tutorials
      • Quick Start: Creating Game Module Objects
      • Automating Start Actions on GameModulesActor
      • Inflicting Damage with Conditions
      • Updating UI (and more) with Blackboard Notes
      • Dynamic Menus with Item Objects and Dictionaries
      • Create Custom Quest Rewards
      • Save and Load Game Data
      • Stats: Deep Dive
      • Items: Deep Dive
      • Conditions: Deep Dive
      • First Person Movement
      • Tutorial: "Overheal" Effect with Condition & Stats
      • Tutorial: Create a Character & Actor Class Inheriting from GameModulesActor
    • 👀Game Modules Viewer
      • Viewer: Dictionaries
      • Viewer: Stat / GameStatList
      • Viewer: ItemObject / GameItemObjectList
      • Viewer: ItemAttribute / GameItemAttributeList
      • Viewer: Condition / GameConditionList
      • Viewer: Quest / GameQuestList
    • V4 Migration Tips
      • Introducing GameModulesActor
      • Interfaces
      • No More Tick*
      • Dictionaries
      • Repositories
      • Tips from Upgrading "Legend of the Stones"
    • Important Information
      • Game Modules Overview
      • Inherit from GameModulesActor
      • Things to not forget to do
      • Bugs, Backups, and Demos
      • FAQ / Tips & Tricks
      • Required Prefabs
      • Game Module Repository
      • Release Notes
    • Module Documentation
      • Game Modules Actor
      • Game Module "Lists"
        • Get() Methods
          • GameStatList Get() Methods
          • GameItemObjectList Get() Methods
          • GameItemAttribute Get() Methods
          • GameConditionList Get() Methods
          • GameQuestList Get() Methods
        • Contains() Methods
          • GameStatList Contains() Methods
          • GameItemObjectList Contains() Methods
          • GameItemAttributeList Contains() Methods
          • GameConditionList Contains() Methods
          • GameQuestList Contains() Methods
        • Count() Methods
          • GameStatList Count() Methods
          • GameItemObjectList Count() Methods
          • GameItemAttributeList Count() Methods
          • GameConditionList Count() Methods
          • GameQuestList Count() Methods
        • Remove() Methods
          • GameStatList Remove() Methods
          • GameItemObjectList Remove() Methods
          • GameItemAttributeList Remove() Methods
          • GameConditionList Remove() Methods
          • GameQuestList Remove() Methods
        • GameStatList
        • GameItemObjectList
        • GameItemAttributeList
        • GameQuestList
        • GameConditionList
      • Blackboard
        • Blackboard.cs
        • Blackboard Follower
        • Blackboard Note
        • Blackboard Event
        • Blackboard Values
        • Tips & Tricks
          • Use extension methods to check BlackboardNotes (or events)
      • Stats
        • IHaveStats
        • Stat.cs
        • GameStat.cs
        • GameStatList.cs
        • Mastery Levels
      • Loot
        • LootItems.cs
        • LootBox.cs
        • GameLootBox.cs
        • Generating & Handling Loot
        • Custom Loot Generation Algorithm
      • Items
        • ItemObject.cs
          • Manage Item Objects
          • Allowed Item Attributes
          • Starting Item Attributes
          • Item Attribute Variables
            • Variables Methods
        • GameItemObject.cs
        • GameItemObjectList.cs
        • ItemAttribute.cs
          • Manage Item Attributes
          • General Settings
          • Name Settings
          • Requisite Attributes
        • GameItemAttribute.cs
        • GameItemAttributeList.cs
        • Code Examples
      • Conditions
        • Condition.cs
          • Main Settings
          • Condition Time
          • Effects on Points
        • GameCondition.cs
        • GameConditionList.cs
        • Expiration Condition Handler
        • Code Examples
      • Quests
        • Quest
          • Main Settings
          • Quest Step Settings
        • Quest Steps
        • Quest Conditions
          • Create a Custom Quest Condition
            • Your Quest Condition
            • Your Quest Condition Editor
            • Your Quest Condition Drawer
          • Quest Condition Details
            • Blackboard Value Bool
            • Blackboard Value GameObject
            • Blackboard Value Number
            • Blackboard Value String
            • Final Stat Is
            • Game Condition List Contains
            • Game Item Object List Contains
            • Game Stat List Contains
          • Quest Condition Enums
        • Quest Rewards
          • Create a Custom Quest Reward
            • Your Quest Reward
            • Your Quest Reward Editor
            • Your Quest Reward Drawer
          • Quest Reward Details
            • Point Reward
            • Condition Reward
            • Quest Quest Reward
            • Item Object Reward
          • Custom Quest Reward Handler
        • GameQuest
        • GameQuestList
        • Quest Events
        • Demo Scene Quests
          • Push the Button
          • Add Money
          • Don't Get Poisoned
          • Rescue the Puppy
      • Voices
        • Voices
        • Voice.cs
        • Code Examples
      • Dictionaries
        • Dictionaries Setup
        • Dictionaries Methods
        • KeyValue Methods
        • Save and Load
        • Object Reference
      • Gametime & Timeboard
        • Timeboard
          • Timeboard Events
          • TimeboardFollower
        • Gametime
          • Pause Level
          • Time Options
          • Properties & Methods
        • TimeSpan
        • Code Examples
      • Property Code
      • Lookup Table
      • Save and Load
        • GameList & GameFile
        • Making objects saveable
        • Saving, and Loading
        • BlackboardEvents sent by Save and Load
    • Game Module "Systems"
      • Drag-and-Drop Inventory System
        • Scripts
          • PanelManager
          • OnScreenItem
          • Panel
          • BoxManager
        • Scene & Class Setup
        • Item / Object Setup
        • Item / Inventory Setup
        • Box Setup (Chests, Bags, Other Inventories)
        • Setup Your Scene
      • First Person Movement
      • Character Creation
    • Game Module Demo Projects
      • Party Based RPG
        • Title Scene
        • Character Creation Scene
        • World & Dungeon Scenes
    • Magic Time for Game Modules
  • ✨Northstar Tracking System
    • ✅Overview & Quickstart
      • ➡️Quick Start
      • 🫐Demo Scene
      • 🛠️Customizing & Overriding
        • Create a Custom Navigation Bar
        • Create a Custom Compass / Radar
        • Runtime Overrides
          • Screen & Edge Overlay
          • Navigation Bar
          • Compass / Radar
      • ☄️Tips & Code Examples
    • Northstar Documentation
      • Global Northstar Settings
      • Northstar Overlay Settings
      • Compass & Radar
        • Compass
        • Radar
      • Northstar Screen Overlay
        • Screen & Edge Overlay
        • Navigation Bar
      • Tracked Target Compass Radar
      • Tracked Target Overlay
        • Types
        • Override Values
      • Overlay Icon
      • Compass Icon
      • Distance Text
  • 🚀Projectile Factory
    • 👀Overview & Quickstart
      • ➡️Quick Start Guide
        • Create Your First Projectile
        • Add Projectile Factory & Create a Projectile Spawner
        • Use 3rd Party Integrations
        • Extending Projectile Factory
        • Making Lasers & Similar Attached Projectiles
      • 💡FAQs + Important Reminders
    • Game Modules 4 Integration
      • Projectiles with TimeMod
    • Magic Time for Projectile Factory
    • ✅3rd Party Particle Integrations [16]
      • ▶️Archanor VFX [5]
        • Sci-Fi Arsenal
        • Polygon Arsenal
        • Magic Arsenal
        • Retro Arsenal
        • Rainbow Magic
      • ▶️Gabriel Aguiar Prod [2]
        • Unique Projectiles Vol. 1
        • Unique Projectiles Vol. 2
      • ▶️HOVL Studio [4]
        • Toon Projectiles
        • Toon Projectiles 2
        • AAA Stylized Projectiles Vol. 1
        • AAA Projectiles Vol. 2
      • ▶️kripto289 [1]
        • Realistic Effects Pack 4
      • ▶️FORGE3D [1]
        • Sci-Fi Effects
      • ▶️Knife [1]
        • PRO Effects - Sci-Fi Shooter FX
      • ▶️Jean Moreno [1]
        • Cartoon FX Remastered
      • ▶️Synty Studios [1]
        • 🟡Synty Studios Particles
    • Projectile Factory Documentation
      • 🔫Projectile Spawner
        • Projectile Spawner Code
      • 🚀Projectile
        • Projectile Code
        • Projectile Data
      • ✨Spawn Behavior
        • Spawn Behavior Code
        • Spawn Behavior Modification
      • 🕊️Behaviors
        • Behavior Examples
      • ⚡Events
      • 👁️Observers, Global Observers, and Observer Objects
        • Toggle Objects At Events Observer Object
      • 👩‍💼Factory Manager
      • 🏹Trajectory
      • 🎱Object Pooling
      • 🤩Create Custom Behaviors
      • Spawn Point Manager
      • Helper Tools
        • Projectiles Quick Editor
        • Set Trail Auto Destroy to False
        • Set Layer of All Projectiles
        • Remove Colliders
      • Additional Scripts
        • Destroy or Pool Object
        • Project Force
        • Raycast Shooter + Handlers
        • Projectile Utilities
  • Additional Systems & Tools
    • 🎨Runtime Color Sampler
      • Quick Start
      • Demo Walkthrough
      • Runtime Color Sampler (Prefab & Class)
        • Sampler Sphere
        • Sampler Camera
      • Runtime Listener
      • Runtime Color Settings
      • Scripting
      • Additional Classes
    • 🙎‍♀️Portrait Avatars
      • Setup
        • Create a Portrait Avatar
        • Create a UI Portrait
      • Portrait Avatars
        • Scripting
      • Portrait3D
      • Portrait2D
      • Portrait UI
      • Avatar Camera
      • Important Considerations
    • 🎛️Audio Clip Combiner
    • 🌈Color Shifter
    • 🛠️Support Classes
      • Utilities.cs
      • InfinityExtensions.cs
  • ⌛Magic Time - Local Time Scale
    • Overview
    • ➡️Quick Start
    • 🛠️Integrations
    • 💡FAQ
    • Local Time Scale
      • Local Time Scale Scripting
    • Magic Time Manager
      • Magic Time Manager Scripting
    • Magic Time User
      • IHaveLocalTime
      • Magic Time User Scripting
      • Additional "Magic Time User" Components
    • Time Zone
  • Equipment Systems
    • Overview
    • Blend Shapes Manager
    • Blend Shapes Preset Manager
    • Prefab and Object Manager
      • Humanoid Demo & Setup
      • EquipmentObject.cs
      • Prefab Groups
      • Variables
      • Scripting Examples
    • Wardrobe Prefab Manager
  • 📽️General Tutorials
    • Quick 3rd Person Controller
  • ⚔️Legend of the Stones
    • Actors, Players, NPCs
    • Systems
      • Game State
  • External Links
  • Get them at the Asset Store
  • Connect on Discord
  • YouTube
  • Twitch
  • 🚧Work In Progress / Coming Soon
Powered by GitBook
On this page
  • Setup
  • Collision Mask
  • Target
  • Projectiles
  • Observers
  • Spawn Points
  • Trajectory
  • Default Trajectory Behavior
  • Show Without Projectile
  • Runtime Values
  • Spawner Events
  • OnLaunch
  • OnProjectileStopped
  • OnShowTrajectoryStart
  • OnShowTrajectoryStop
  • OnNewProjectileSelected<Projectile, Projectile>
  • OnNewSpawnPointSelected<SpawnPoint, SpawnPoint>
  • Projectile Events
  • Projectile On Launch (OnLaunch<Projectile>)
  • OnProjectileStopped<Projectile>
  • OnReturnToPool<Projectile> & OnGetFromPool<Projectile>
  • OnCollisionEnter<Projectile, Collision, GameObject, Vector3> & Exit, Stay
  • OnTriggerEnter<Projectile, Collider, GameObject, Vector3> & Exit, Stay
  • OnDoDestroy<Projectile>
  • OnDoEnable<Projectile> & OnDoDisable<Projectile>
  • OnReset<Projectile>
  • OnProjectileSpawnerSet<ProjectileSpawner, Projectile>

Was this helpful?

  1. Projectile Factory
  2. Projectile Factory Documentation

Projectile Spawner

v1.0

PreviousProjectile Factory DocumentationNextProjectile Spawner Code

Last updated 1 year ago

Was this helpful?

This is a thing that spawns . It could be a gun or other object, it could be something like a turret in your game, or it could be a virtual object on your player character which can spawn all sorts of projectiles.

Add a ProjectileSpawner component to the object you wish to spawn projectiles.

The custom inspector organizes the Projectile Spawner options into a few categories. Toggle on the "Show Help Boxes" option to see more details inside the Inspector.

Setup

This is where we set up all the required and some optional settings.

Collision Mask

The Projectiles spawned by this Spawner will interact with the layers you select here. Each Projectile can override this layer as well, though in most cases, we expect you would not override the value set on the Spawner.

Target

This is the target which Projectiles will inherit at spawn. You can update this at runtime as well.

While each projectile will inherit the target when they are created, the projectiles can individually have their targets updated while they are active.

Projectiles

Observers

In the demo scenes, the Demo Actor Observer is included, which enables the player Actor to know whenever one of their projectiles collides with a target. This is how damage is sent from the player Actor to the target Actor.

Spawn Points

Trajectory

Default Trajectory Behavior

Each spawner can include a default Trajectory Behavior to used when the trajectory is active. Individual Projectiles can override this, which is useful when the Projectile behavior is more unique.

Trajectories are an important player experience for many games, and provide a lot of information to the player. Projectile Factory ships with a number of game-ready trajectories, but you may wish to create your own, to provide your players the best experience for your project.

Show Without Projectile

When true, the Trajectory will show even if no projectile is currently selected in the spawner.

Runtime Values

These values are set at runtime.

Always Show Trajectory

When true, the trajectory will always show.

Show Trajectory

When true, the trajectory should show.

Spawner Events

These UnityEvents are called throughout the Projectile Spawners lifecycle. Use these to hook into the Projectile Factory system from your classes.

The Demo Controller use the OnNewProjectileSelected event. If the "fire" button (mouse button in the demo) is down when this event is triggered, the controller will initiatiate the "Spawn" immediately, which allows for continuous firing even while the projectiles change.

OnLaunch

Called whenever the Projectile Spawner starts the Launch coroutine. This is not called for each individual projectile that is spawned. Use the Projectile Events for that.

OnProjectileStopped

This is called when the Launch coroutine is stopped.

OnShowTrajectoryStart

This event is called whenever the Trajectory starts to show.

OnShowTrajectoryStop

This event is called whenever the Trajectory stops showing.

OnNewProjectileSelected<Projectile, Projectile>

Whenever a new projectile is selected, this event will be called. This event has a <Projectile, Projectile> signature, which includes the New Projectile and the Old Projectile (in that order).

OnNewSpawnPointSelected<SpawnPoint, SpawnPoint>

This is called whenever a new Spawn Point is selected. This event has a <SpawnPoint, SpawnPoint> signature, which includes the New Spawn Point and the Old Spawn Point (in that order).

Projectile Events

These events are called from the Projectile during the lifecycle of the projectile.

Projectiles can not directly have Unity Events added from in-scene objects. Instead, add them here on the Projectile Spawner. The events will be copied to each projectile when the projectile is spawned.

Projectile On Launch (OnLaunch<Projectile>)

Called when the projectile is launched.

OnProjectileStopped<Projectile>

This is called when the Projectile Spawner assigned to this Projectile stops firing.

OnReturnToPool<Projectile> & OnGetFromPool<Projectile>

These are called when the projectile is returned to the pool or retreieved from the pool respectively.

OnCollisionEnter<Projectile, Collision, GameObject, Vector3> & Exit, Stay

The collision events pass in the projectile, as well as the Collision, the GameObject collided with, and the Vector3 point of contact. Note that depending on how the collision was triggered, those values may be null or default.

OnTriggerEnter<Projectile, Collider, GameObject, Vector3> & Exit, Stay

The trigger events pass in the projectile, as well as the Collider, the GameObject collided with, and the Vector3 closest contact point. Note that depending on how the trigger was triggered, those values may be null or default.

OnDoDestroy<Projectile>

This is called when the Projectile is destroyed via the InvokeDestroy method on Projectile.cs.

OnDoEnable<Projectile> & OnDoDisable<Projectile>

These are called when the DoEnable and DoDisable methods are called. They may be called from the normal OnEnable and OnDisable methods, or via other mechanisms.

OnReset<Projectile>

This event is called at the end of the ResetProjectile method. While this method may be called in other ways, ProjectilePoolManager will call this during the ReturnProjectile cycle -- this is when the projectile is being put back into the pool.

OnProjectileSpawnerSet<ProjectileSpawner, Projectile>

This event is called when the assigned ProjectileSpawner is set via the SetProjectileSpawner method. This happens at the start of the lifecycle, but may also happen if you proactively change the assigned ProjectileSpawner.

This is the list of available projectiles. You need to have at least one projectile. Check the for details on how to set the active projectile, and replace projectiles in the list with new ones.

The you add here will be copied to all projectiles created by this Spawner. This enables new hooks for your project.

There are multiple ways to hook into the Projectile Factory code -- you may wish to use the to handle damage connections instead.

Each Projectile Spawner can have any number of Spawn Points. Each point includes the transform of the "spawn point" itself, as well as a rotating and tilting transform, which may be utilized by some of the .

If you have more than one Spawn Point, use a class to control how the Spawn Points are selected. This provides a tremendous amount of control in order to create any kind of spawning behavior you'd like.

🚀
🔫
code
Observers
Events
Spawn Behaviors
Spawn Point Manager
Projectile Spawner Code
Projectiles
Add Projectile Factory & Create a Projectile Spawner
The Demo "Actor" from the Sci-Fi Arsenal integration
The Demo Spawner uses OnNewProjectileSelected to enable continuous shooting if the mouse button is still pressed.