private Ball CreateBall(BallId ballId, int side) { var instance = PrefabsHelper.Instantiate("Balls/" + ballId, Balls); var ball = instance.GetComponent <Ball>(); ball.Initialize(side); Destroy(instance, 5); return(ball); }
public void OnTriggerEnter2D(Collider2D c) { if (_hit != 0) { return; } var sign = Math.Sign(c.GetComponent <Rigidbody2D>().velocity.x); var ball = c.name.Split('/')[1].ToEnum <BallId>(); if (Math.Sign(_evasion) == sign) { UI.UpdateScore(++Score); AudioPlayer.Instance.PlayEffect(AudioPlayer.Instance.Swing); } else { Hearts -= 1; if (ball == BallId.Rugby) { Hearts -= 1; } UI.UpdateHearts(Hearts); c.gameObject.GetComponent <Ball>().Recoil(-sign); _hit = -sign; SetReflection(_hit); if (Hearts >= 0) { TaskScheduler.Kill(Id); Animator.Play(HitAnimation.name); AudioPlayer.Instance.PlayEffect(AudioPlayer.Instance.Hit); TaskScheduler.CreateTask(Stand, Id, HitAnimation.length); } else { Item = ball; TaskScheduler.Kill(Id); Animator.Play(FallAnimation.name); AudioPlayer.Instance.PlayEffect(AudioPlayer.Instance.Fall); Beads.Fall(); TaskScheduler.CreateTask(() => Engine.Stop(Score), Id, 2); } } }