using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Saltosion.OneWeapon { public class BloodLauncher : MonoBehaviour { private static BloodLauncher Singleton; public GameObject BloodParticlePrefab; public Transform ParticleRoot; public int MaxParticles; public bool DebugLaunch = false; public static void Splatter(Vector2 origin, Vector2 direction, int particleCount, float force, float degrees) { for (int i = 0; i < particleCount; i++) { if (Singleton.ParticleRoot.childCount >= Singleton.MaxParticles) { Destroy(Singleton.ParticleRoot.GetChild((int)(Random.value * Singleton.ParticleRoot.childCount)).gameObject); } GameObject Obj = Instantiate(Singleton.BloodParticlePrefab, origin, new Quaternion(), Singleton.ParticleRoot); BloodParticle Particle = Obj.GetComponent(); float Intensity = Mathf.Pow(Random.value * force, 1.1f); float Cone = degrees / 360.0f; float Offset = Mathf.Atan2(direction.y, direction.x); float Radians = Offset + Cone * (Random.value - 0.5f) * Mathf.PI * 2.0f; Particle.LaunchForce = new Vector2(Mathf.Cos(Radians), Mathf.Sin(Radians)) * Intensity; } } private void Start() { Singleton = this; } } }