using SHADE; using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Xml.Linq; public class Breakable : Script { public float threshHold = 1.0f; public float force = 2.0f; private RigidBody rb; private Transform trans; private bool isBreak = false; private List itemPieces = new List(); private Random ran = new Random(); protected override void awake() { rb = GetComponent(); if (!rb) Debug.LogError("RIGIDBODY EMPTY"); trans = GetComponent(); if(!trans) Debug.LogError("TRANSFORM EMPTY"); foreach (GameObject pieces in GameObject) { itemPieces.Add(pieces); pieces.SetActive(false); } } protected override void update() { if (isBreak) Break(); } protected override void onCollisionEnter(CollisionInfo info) { if (rb.LinearVelocity.GetSqrMagnitude() > threshHold) { isBreak = true; } } protected override void onTriggerEnter(CollisionInfo info) { } private void Break() { foreach (GameObject item in itemPieces) { item.SetActive(true); item.GetComponent().GlobalPosition = trans.LocalPosition + item.GetComponent().LocalPosition; GameObject gO = item; gO.Parent = GameObject.Null; } isBreak = false; Owner.SetActive(false); } }