Beispiel #1
0
    public void SpawnGibs(GibType gType, Rect area, int amount, float force  = 10, float lifeSpan = 5)
    {
        List<Gib> eList;

        if (_gibs.TryGetValue(gType, out eList))
        {
            for (int a = 0; a < amount; a++)
            {
                Gib g = null;

                for (int i = 0; i < eList.Count; i++)
                {
                    if (!eList[i].gameObject.activeInHierarchy)
                    {
                        g = eList[i];
                        break;
                    }
                }

                if (!g)
                {
                    g = NewGib(gType);
                }

                var position = new Vector2(Random.Range(area.xMin, area.xMax), Random.Range(area.yMin, area.yMax));

                g.Spawn(gType, position, force, lifeSpan);
            }
        }
    }
 public GameObject GetGib(GibType g)
 {
     for (int i = 0; i < gibs.Length; i++)
     {
         if (gibs[i].type == g)
         {
             return(gibs[i].gibPrefab);
         }
     }
     return(null);
 }
Beispiel #3
0
    public Gib NewGib(GibType gType)
    {
        if(gType == GibType.None)
        {
            return null;
        }

        Gib newGib = null;

        switch (gType)
        {
            case GibType.BlueRock:
                newGib = Instantiate(BlueRockGibs[_gibPrefabIndex[gType]]) as Gib;
                break;
            case GibType.BrownRock:
                newGib = Instantiate(BrownRockGibs[_gibPrefabIndex[gType]]) as Gib;
                break;
            case GibType.Meat:
                newGib = Instantiate(MeatGibs[_gibPrefabIndex[gType]]) as Gib;
                break;
            case GibType.Metal:
                newGib = Instantiate(MetalGibs[_gibPrefabIndex[gType]]) as Gib;
                break;
        }

        if (newGib)
        {
            newGib.transform.parent = transform;
            newGib.gameObject.SetActive(false);
            _gibs[gType].Add(newGib);
        }

        int gibCount = 0;

        switch (gType)
        {
            case GibType.BlueRock:
                gibCount = BlueRockGibs.Count;
                break;
            case GibType.BrownRock:
                gibCount = BrownRockGibs.Count;
                break;
            case GibType.Meat:
                gibCount = MeatGibs.Count;
                break;
            case GibType.Metal:
                gibCount = MetalGibs.Count;
                break;
        }

        _gibPrefabIndex[gType] = (_gibPrefabIndex[gType] + 1) % gibCount;

        return newGib;
    }
Beispiel #4
0
    public void Spawn(GibType gType, Vector3 origin, float force, float lifeSpan)
    {
        //transform.parent = null;
        transform.position = origin;
        _lifeSpan = lifeSpan;
        _lifeCounter = 0;
        _spriteRenderer.color = _orignalColor;
        _rigidbody2D.AddForce(Random.insideUnitCircle.normalized * force);
        gameObject.SetActive(true);

        gameObject.layer = LayerConstants.EnvironmentOnly;
    }