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(); } } public void Explode() { foreach (GameObject Obj in BodypartPrefabs) { 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; float DirectionRadians = Random.value * Mathf.PI * 2.0f; Bodypart.AddForce(new Vector2(Mathf.Cos(DirectionRadians), Mathf.Sin(DirectionRadians)) * Force, ForceMode2D.Impulse); Bodypart.AddTorque((Random.value - 0.5f) * Force, ForceMode2D.Impulse); BloodLauncher.Splatter(transform.position, Vector2.zero, 70, 50f, 360f); } } } }