45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
|
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<Rigidbody2D>();
|
|||
|
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<Rigidbody2D>();
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|