Projectile is the base class for bullets. It lets you slot AudioClips and AnimationClips to play during various states of the Projectile, as well as determine if the Projectile should be reflected upon contact with a Reflector component. It’s designed to be used in conjunction with a ContactDamage component so that it will damage actors it touches. It’s also especially effective when paired with a RexPool to spawn the individual instances of the Projectile.

Public Methods

public void Fire(Vector2 _startingPosition, Direction.Horizontal _horizontal, Direction.Vertical _vertical = Direction.Vertical.Neutral, RexPool _parentSpawnPool = null)

Fires the projectile. _startingPosition governs the location where the projectile spawns and begins firing from. _horizontal governs the horizontal direction the projectile fires in, and _vertical is the vertical direction. _parentSpawnPool passes in the RexPool which spawned the Projectile, if any, and allows the Projectile to communicate with it for certain events.

public override void Clear()

Either despawns the Projectile if parentSpawnPool is set, or calls Destroy() if not.

public void OnSpawned()

Initializes the starting values for the projectile. This is called automatically by the Projectile’s OnEnable().

Public Members

public DestroyOnHit willDestroyOnHit

Properties determining if this Projectile is destroyed when it hits the Player, enemies, or terrain.

public Reflection reflection

Properties relating to what can reflect this Projectile and how it behaves once reflected.

public Animations animations

Here, you can slot AnimationClips for the default, spawning, and death of this Projectile.

public Sounds sounds

Here, you can slot AudioClips for the fire, death, and reflection of this Projectile.

public Vector2 movementSpeed

The movement speed of this projectile on both the X and Y axes.

public ForceType verticalForceType

Can be set to either Continuous, in which case its vertical velocity is applied every frame, or Initial, in which case its vertical velocity is applied only on the first frame when it fires.

public ContactDamage contactDamage

If this GameObject has a ContactDamage component, it can be slotted here. Doing so allows the contact damage properties to change if the Projectile is reflected.

public bool willDestroyWhenOffscreen

Whether or not the Projectile will be destroyed as soon as it leaves the field of view of the main camera.

public bool willDestroyWhenSceneChanges

Whether or not the Projectile will be destroyed if a new scene is loaded.

public bool willShakeScreenOnDeath

Whether or not the Projectile will shake the screen when it dies.

public float rotationSpeed

Setting this higher than 0 lets the projectile sprite rotate each frame it’s being fired.

public RexPool parentSpawnPool

If this is spawned via a RexPool, set this to the pool that spawned it; this will enable it to despawn from the same pool.

public RexActor spawningActor

A reference to the RexActor that spawned this, if any.

public Attack spawningAttack

A reference to the Attack that spawned this, if any.

public Direction.Horizontal horizontalDirection

The horizontal direction the Projectile is facing.

public Direction.Vertical verticalDirection

The vertical direction the Projectile is facing.