Example #1
0
    // Start is called before the first frame update
    void Start()
    {
        beet = FindObjectOfType <BeetMovement>();
        ui   = FindObjectOfType <UI>();

        startStatus   = currentStatus;
        startLocation = transform.position;
        speed         = Mathf.Min(speed, beet.GetSpeed() - 0.1f);
        _anim         = GetComponentInChildren <Animator>();
        _rend         = GetComponentInChildren <SpriteRenderer>();
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        switch (currentStatus)
        {
        case Status.offboard:
            break;

        case Status.onboard:
            if (Vector2.Distance(transform.position, beet.transform.position) < 0.3f)
            {
                CollectFriend();
            }
            break;

        case Status.following:
            _anim.SetBool("Run", true);

            transform.position = Vector2.MoveTowards(transform.position, beet.GetFollowLoc(), (beet.GetSpeed() - speed) * Time.deltaTime);
            if (beet.transform.position.x < transform.position.x)
            {
                _rend.flipX = true;
            }
            else if (beet.transform.position.x > transform.position.x)
            {
                _rend.flipX = false;
            }
            break;
        }
        if (beet.GetMoveState() == BeetMovement.moveState.win || beet.GetMoveState() == BeetMovement.moveState.lose)
        {
            currentStatus = Status.offboard;
        }
    }