public void Start() { if (size.x == 0) { size.x = background.GetComponent<SpriteRenderer>().bounds.size.x; } if (size.y == 0) { size.y = background.GetComponent<SpriteRenderer>().bounds.size.y; } MovingLayerPart mainSprite = new MovingLayerPart(); mainSprite.SetSprite(background); mainSprite.SetSize(size); __parts.Add(mainSprite); __sign.x = speed.x < 0 ? 1 : -1; __sign.y = speed.y < 0 ? 1 : -1; if (speed.y != 0) { __SetClone(0, size.y, "vertical"); } if (speed.x != 0) { __SetClone(size.x, 0, "horisontal"); } if (speed.x != 0 && speed.y != 0) { __SetClone(size.x, size.y, "diagonal"); } foreach (MovingLayerPart part in __parts) { part.Start(); } }
private void __SetClone(float sizeX = 0, float sizeY = 0, string name = "") { MovingLayerPart verticalSprite = new MovingLayerPart(); Transform verticalSpriteTransform = Transform.Instantiate(background) as Transform; verticalSpriteTransform.transform.parent = background.transform.parent; verticalSpriteTransform.transform.name = background.transform.name + " " + name + " clone"; verticalSprite.SetSprite(verticalSpriteTransform); verticalSprite.SetDelta(new Vector2(sizeX * __sign.x, sizeY * __sign.y)); verticalSprite.SetSize(size); __parts.Add(verticalSprite); }