using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Saltosion.OneWeapon { public class Explodable : MonoBehaviour { public GameObject[] BodypartPrefabs; public bool DebugExplode = false; private void Start() { foreach (GameObject Obj in BodypartPrefabs) { Rigidbody2D Body = Obj.GetComponent(); if (Body == null) { Debug.LogError($"'{Obj.name}' is an explodable bodypart, and does not have a Rigidbody2D!\n\n" + "Therefore it cannot be exploded. Please provide one.\n" + "Following is the GameObject that needs to get a Rigidbody2D."); } } } private void Update() { if (DebugExplode) { DebugExplode = false; Explode(false); } } public void Explode(bool destroyGameObject) { foreach (GameObject Obj in BodypartPrefabs) { // No body parts flying in censored mode float DirectionRadians = Random.value * Mathf.PI * 2.0f; Vector2 Direction = new Vector2(Mathf.Cos(DirectionRadians), Mathf.Sin(DirectionRadians)); if (!Options.CensorGore) { GameObject NewObj = Instantiate(Obj, transform.position, new Quaternion(), null); Rigidbody2D Bodypart = NewObj.GetComponent(); if (Bodypart == null) { continue; } float Force = 0.5f + Random.value * 0.5f; Bodypart.AddForce(Direction * Force, ForceMode2D.Impulse); Bodypart.AddTorque((Random.value - 0.5f) * Force, ForceMode2D.Impulse); } // Blood is replaced by flowers though, no problem with that BloodLauncher.Splatter(transform.position + (Vector3)Direction * 0.2f, Vector2.zero, 70, 50f, 360f); } if (destroyGameObject) { Destroy(gameObject); } } } }