コード例 #1
0
    private BasicMovements RandomMove()
    {
        if (!GameManager.Instance.Pause.Paused)
        {
            bool           canDo = false;
            BasicMovements mov   = BasicMovements.Idle;

            mov   = MovementSet[UnityEngine.Random.Range(0, MovementSet.Count)];
            canDo = Mathf.Abs(transform.position.x - InitPos.x) < MoveFreedom && Mathf.Abs(transform.position.y - InitPos.y) < MoveFreedom;
            if (!canDo)
            {
                if (transform.position.x > InitPos.x)
                {
                    return(BasicMovements.Left);
                }
                else if (transform.position.x < InitPos.x)
                {
                    return(BasicMovements.Right);
                }
                else if (transform.position.y > InitPos.y)
                {
                    return(BasicMovements.Down);
                }
                else
                {
                    return(BasicMovements.Up);
                }
            }

            return(mov);
        }
        else
        {
            return(BasicMovements.Idle);
        }
    }
コード例 #2
0
    protected bool PerformMove(BasicMovements Movement)
    {
        switch (Movement)
        {
        case BasicMovements.Right:
            if (Raycast(Vector2.right, 1f))
            {
                move(Vector2.right, TilesPerSec);

                if (transform.localScale.x < 0f)
                {
                    transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
                }

                if (_animator)
                {
                    _animator.Play(Animator.StringToHash("Run"));
                }
                return(true);
            }
            break;

        case BasicMovements.Left:
            if (Raycast(Vector2.left, 1f))
            {
                move(Vector2.left, TilesPerSec);
                if (transform.localScale.x > 0f)
                {
                    transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
                }

                if (_animator)
                {
                    _animator.Play(Animator.StringToHash("Run"));
                }
                return(true);
            }
            break;

        case BasicMovements.Up:
            if (Raycast(Vector2.up, 1f))
            {
                move(Vector2.up, TilesPerSec);

                if (_animator)
                {
                    _animator.Play(Animator.StringToHash("RunUP"));
                }
                return(true);
            }
            break;

        case BasicMovements.Down:
            if (Raycast(Vector2.down, 1f))
            {
                move(Vector2.down, TilesPerSec);

                if (_animator)
                {
                    _animator.Play(Animator.StringToHash("RunDown"));
                }
                return(true);
            }
            break;

        case BasicMovements.Idle:
            //Don't move
            if (_animator)
            {
                _animator.Play(Animator.StringToHash("Idle"));
            }
            return(true);

            break;
        }
        return(false);
    }