//движение мячика к стартовой позиции
        void  MoveToStartPosition()
        {
            rb.isKinematic     = true;
            collider2D.enabled = false;

            var startPos = ReturnPosition;
            var dist     = Vector3.Distance(transform.position, startPos);

            transform.position = Vector3.Lerp(transform.position, startPos, MOVE_TIME * Time.deltaTime);

            if (dist <= 0.01f)
            {
                rb.velocity        = Vector2.zero;
                rb.isKinematic     = false;
                collider2D.enabled = true;

                var tp = transform.position;
                tp = startPos;
                transform.position = tp;

                state = StateBall.STAY;

                if (BallReturnEvent != null)
                {
                    BallReturnEvent();
                }
            }
        }
示例#2
0
 public void resetPosition()
 {
     endParticleSystem.gameObject.SetActive(false);
     ballAnimator.SetBool("inGame", false);
     stateBall = StateBall.isIdle;
     parent.transform.position = Vector3.zero;
     transform.position        = Vector3.zero;
 }
        void OnDisable()
        {
            rb.velocity = Vector2.zero;

            var tp = transform.position;

            tp   = ReturnPosition;
            tp.z = 0f;
            transform.position = tp;

            state = StateBall.STAY;
        }
        //запуск мячика
        public void Push(Vector2 force)
        {
            if (!IsReady())
            {
                return;
            }

            rb.velocity = force;
            isGraund    = false;
            state       = StateBall.MOVE;
            StartCoroutine(TimerSpeed());
        }
        //задает мячу состояние возврата на старт
        public void BackToStart()
        {
            if (state == StateBall.MOVE)
            {
                state = StateBall.RETURN;

                isGraund = true;

                isLongFly   = false;
                addedSpeed  = 1f;
                rb.velocity = Vector2.zero;
            }

            //если мячи не двигаются, но они не на позиции для возврата - меняем состояние на Return
            if (state == StateBall.STAY && Vector3.Distance(transform.position, ReturnPosition) > 0.01f)
            {
                var tp = transform.position;
                tp = ReturnPosition;
                transform.position = tp;
            }
        }
        void UpdateState()
        {
            switch (state)
            {
            case StateBall.STAY:

                break;

            case StateBall.MOVE:
                if (isGraund)
                {
                    state = StateBall.RETURN;
                }
                break;

            case StateBall.RETURN:
                MoveToStartPosition();
                StopCoroutine(TimerSpeed());
                break;
            }
        }
 void Awake()
 {
     rb         = GetComponent <Rigidbody2D>();
     collider2D = GetComponent <Collider2D>();
     state      = StateBall.STAY;        //состояния мяча
 }
示例#8
0
 public void setStateBall(StateBall state) => stateBall = state;
示例#9
0
 public void play()
 {
     ballAnimator.SetBool("inGame", true);
     stateBall = StateBall.isBounce;
     setEnableBallAnimator(true);
 }