public void CreateWave(Wave wave) { waveSequence.Kill(false); waveSequence = DOTween.Sequence(); foreach (EnemyType enemy in wave.enemies) { EnemyType temp = enemy; //mask.forceDefaultMaterialOnChilds = true; waveSequence.AppendCallback(() => { Debug.LogFormat("Create {0}", temp); GameObject enemyObject = Instantiate(prefabMap[temp]) as GameObject; enemyObject.transform.SetParent(transform); enemyObject.transform.localPosition = leftEmitter.localPosition; enemyObject.GetComponent <Enemy>().StartMotion(wave.path); // mask.update(); foreach (SpriteRenderer renderer in enemyObject.GetComponentsInChildren <SpriteRenderer>()) { mask.updateSprites(renderer.transform); } }); waveSequence.AppendInterval(wave.timeBetweenEmits); } }
/// <summary> /// Find mask component for <code>t</code> and call <code>updateSprites(t)</code>. /// </summary> public static SpriteMask updateFor(Transform t) { SpriteMask mask = getParentMask(t); if (mask != null) { mask.updateSprites(t); } return(mask); }
void Start() { if (target == null) { target = gameObject; } SpriteMask mask = target.AddComponent <SpriteMask> (); mask.type = SpriteMask.Type.Rectangle; mask.size = new Vector2(350f, 350f); attachSprite(spriteCloud, new Vector2(110f, 160f)).sortingOrder = 1; attachSprite(spriteTree, new Vector2(-120f, 75f)).sortingOrder = 2; attachSprite(spriteAnimal1, new Vector2(100f, -40f)).sortingOrder = 3; attachSprite(spriteAnimal2, new Vector2(-160f, -100f)).sortingOrder = 4; // Call this to get sprites masked mask.updateSprites(); }