Skip to content

Instantly share code, notes, and snippets.

public class Projectile : PooledMonobehaviour
{
}
var projectile = prefab.Get<Projectile>();
using UnityEngine;
public class StatesBySwitch : MonoBehaviour
{
private StateIds currentStateId;
private void Update()
{
switch (currentStateId)
{
using UnityEngine;
public class Character : MonoBehaviour
{
private State currentState;
private void Start()
{
SetState(new ReturnHomeState(this));
}
public abstract class State
{
protected Character character;
public abstract void Tick();
public virtual void OnStateEnter() { }
public virtual void OnStateExit() { }
public State(Character character)
using UnityEngine;
public class ReturnHomeState : State
{
private Vector3 destination;
public ReturnHomeState(Character character) : base(character)
{
}
using UnityEngine;
public class WanderState : State
{
private Vector3 nextDestination;
private float wanderTime = 5f;
private float timer;
using UnityEngine;
public class Character : MonoBehaviour
{
[SerializeField]
private float moveSpeed = 1f;
private State currentState;
private void Start()
private void OnDrawGizmos()
{
#if UNITY_EDITOR
var wave = GetComponentInParent<Wave>();
var name = string.Format("{0}\r\n{1}", wave != null ? wave.name : "NOWAVE", gameObject.name);
bool isSelectedWave = transform.IsInCurrentSelectedWave();
Gizmos.color = isSelectedWave ? Color.green : Color.gray;
public override string ToString()
{
float initialSpawnTime = _initialDelayTimer;
var waveTimedTrigger = GetComponentInParent<WaveTimedTrigger>();
if (waveTimedTrigger != null)
initialSpawnTime += waveTimedTrigger.Delay;
var formattedDelay = TimeSpan.FromSeconds(initialSpawnTime + _initialDelayBeforeSpawns);
var name = string.Format("Spawn {0} [{1}/{2}]", _numberOfEnemiesToSpawn, _numberToSpawnAtOnce, _delayBetweenSpawns, initialSpawnTime);