public void DestroyTower() { foreach (GameObject scrapObject in AttachedScraps) { if (UnityEngine.Random.Range(0.0f, 100.0f) < _droprate) { scrapObject.transform.parent = null; Scrap scrap = scrapObject.GetComponent <Scrap>(); scrapObject.GetComponent <Rigidbody>().isKinematic = false; scrap.ChangeAttachementState(); scrap.ChangeCollectionState(); scrap.ThrowScrapAway(transform.position, scrap.transform.position, ScrapThrowFactor); if (scrapObject.GetComponent <Attack>() != null) { scrapObject.GetComponent <Attack>().DisableAttack(); } } else { Destroy(scrapObject); } } AttachedScraps.RemoveRange(0, AttachedScraps.Count); }
private GameObject AddParticularScrap(ScrapType scraptype, int subTypeIndex) { Vector3 slotPosition = ScrapSlots[AttachedScraps.Count].position; GameObject scrap = _ressourceManagement.GetScrapPrefabBySubTypeIndex((int)scraptype, subTypeIndex); GameObject scrapInstant = Instantiate(scrap, slotPosition, ScrapSlots[AttachedScraps.Count].rotation); Vector3 pivotPosition = ScrapSlots[AttachedScraps.Count].rotation * scrap.GetComponent <Scrap>().TowerAttachementPivot.position; scrapInstant.transform.position -= pivotPosition; scrapInstant.transform.parent = ScrapSlots[AttachedScraps.Count]; AttachedScraps.Add(scrapInstant); if (scrapInstant.GetComponent <Attack>() != null) { scrapInstant.GetComponent <Attack>().EnableAttack(); } return(scrapInstant); }