예제 #1
0
        private IEnumerator AimPhase(IPushable pushable, AimLogic aimLogic)
        {
            _visuals.Indicator.enabled = true;
            while (!pushable.IsPushed())
            {
                AimState state = aimLogic.GetCurrentAimState(Time.time);

                _visuals.Indicator.UpdateState(state);
                yield return(null);
            }

            pushable.IsPushed();
            yield return(null);
        }
예제 #2
0
        private IEnumerator ShowScorePhase(AimState state)
        {
            _visuals.Camera.GoToScorePoint();

            if (state.Score > 1)
            {
                yield return(StartCoroutine(_visuals.Scores.ShowScore(state.Score)));
            }
            else
            {
                yield return(StartCoroutine(_visuals.Scores.YouMissed()));
            }

            _visuals.MainButton.enabled = true;
        }
예제 #3
0
        private Func <float, Vector3> GetTrajectory(AimLogic logic, AimState state)
        {
            Func <float, Vector3> trajectory;

            bool hitted = !state.Missed;

            if (hitted)
            {
                Vector3 init  = logic.GetHitPoint(state.ZoneIndex);
                Vector3 start = _visuals.AimTarget.Arrow.position;
                Vector3 end   = _visuals.AimTarget.RelativePoint(init);
                trajectory = logic.KinematicTraject(start, end);
//                trajectory = logic.DirectTraject(start, end);
            }
            else
            {
                Vector3 start = _visuals.AimTarget.Arrow.position;
                Vector3 end   = _visuals.AimTarget.RandomMissPoint();
                Debug.DrawLine(start, end);
                trajectory = logic.KinematicTraject(start, end);
            }

            return(trajectory);
        }