Пример #1
0
    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);
    }
Пример #2
0
    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);
    }