public override void EventPlacedShade(BehaviourBall ball) { shakeAmplitude += shakeAmplitudeIncrease; if (--weakBreak == 0) { StartCoroutine(AnimationDestroyByBreak()); } }
private IEnumerator AnimationTeleportToTile(BehaviourBall ball, int tile) { Image image = ball.GetComponent <Image>(); image.color = new Color(image.color.r, image.color.g, image.color.b, 1); Color initialColor = image.color; Color teleportColor = image.color; teleportColor = new Color(teleportColor.r, teleportColor.g, teleportColor.b, 1); ball.frozen = true; float elapsed = 0f; while (image.color != teleportColor) { yield return(new WaitForSeconds(0.01f)); elapsed += Time.deltaTime; image.color = Color.Lerp(image.color, teleportColor, elapsed / (teleportDelay * 0.5f)); } elapsed = 0f; teleportColor = new Color(teleportColor.r, teleportColor.g, teleportColor.b, 0); while (image.color.a > 0) { yield return(new WaitForSeconds(0.01f)); elapsed += Time.deltaTime; image.color = Color.Lerp(image.color, teleportColor, elapsed / (teleportDelay * 0.5f)); } ball.state = BehaviourBall.stateUndecided; int x; do { x = UnityEngine.Random.Range(0, (int)gameManager.loadedLevel.size.x); }while (x == (int)position.x); int y; do { y = UnityEngine.Random.Range(0, (int)gameManager.loadedLevel.size.y); }while (y == (int)position.y); ball.EventTeleportTo(gameManager.loadedLevel.channels[y, x].transform); image.color = initialColor; ball.frozen = true; }
public Ball(GameManager gameManager, LevelManager levelManager, Level level, Vector2 position) { gameObject = new GameObject("Ball", new Type[] { typeof(RectTransform), typeof(CanvasRenderer), typeof(Image), typeof(BehaviourBall) }); gameObject.tag = "Ball"; BehaviourBall ballBehaviour = gameObject.GetComponent <BehaviourBall>(); ballBehaviour.Initialize(gameManager, levelManager, position); Image image = gameObject.GetComponent <Image>(); image.sprite = levelManager.spriteBalls; image.color = levelManager.colorBall; Transform parent = level.channels[(int)position.y, (int)position.x].transform; gameObject.transform.SetParent(parent); gameObject.transform.localPosition = new Vector3(0, 0, 0); gameObject.GetComponent <RectTransform>().sizeDelta = new Vector2(level.channelSize / 4, level.channelSize / 4); }
public override void EventReachedOrigin(BehaviourBall ball) { base.EventReachedOrigin(ball); StartCoroutine(AnimationTeleportToTile(ball, 0)); }
public virtual void EventPlacedShade(BehaviourBall ball) { }
public virtual void EventReachedOrigin(BehaviourBall ball) { balls--; }
public virtual void EventEnteredChannel(BehaviourBall ball) { balls++; }
public override void EventEnteredChannel(BehaviourBall ball) { base.EventEnteredChannel(ball); //Shuffle adjacent tiles }
public override void EventEnteredChannel(BehaviourBall ball) { base.EventEnteredChannel(ball); ball.effectSpeedElapsed = speedDuration; }