// Start is called before the first frame update void Start() { //InitializeDecals(); collisionEvents = new List <ParticleCollisionEvent>(); decalsOnCeiling = new List <EasyDecal>(); particles = new ParticleSystem.Particle[maxDecals]; particleData = new BloodParticleData[maxDecals]; for (int i = 0; i < maxDecals; i++) { particleData[i] = new BloodParticleData(); } }
private BloodParticleData GetBloodParticleData(Hazard hazard, Vector2 ninjaPosition) { var star = hazard as NinjaStarController; if (star != null) { var data = new BloodParticleData(Quaternion.Euler(0, 0, Random.Range(-40.0f, 40.0f)) * (star.Rigidbody2D.velocity * Random.Range(0.1f, 0.75f)), ninjaPosition); return(data); } var saw = hazard as RotatingHazard; if (saw != null) { float speed = saw.RotationSpeed; float angle = Random.Range(0.0f, 359.0f); Vector2 velocity = Quaternion.Euler(0, 0, angle) * new Vector2(speed * Random.Range(0.125f, 1.25f), 0); Vector2 position = Quaternion.Euler(0, 0, angle) * new Vector2(saw.Radius * 1.1f, 0) + saw.transform.position; return(new BloodParticleData(velocity, position)); } return(new BloodParticleData(Random.insideUnitCircle * 10, ninjaPosition)); }