Exemplo n.º 1
0
    public IEnumerator MoveCorutine()
    {
        while (true)
        {
            yield return(new WaitForSeconds(Random.Range(0.5f, 1.0f) * MoveDelaySec));

            if (Random.Range(0, 11) > 0)
            {
                MoveDirection = Vector3.zero;

                float   random            = Random.Range(0, 2) * 2 - 1;
                Vector3 prevMoveDirection = MoveDirection;

                if (Random.Range(0, 2) > 0)
                {
                    MoveDirection = new Vector3(random, prevMoveDirection.y, prevMoveDirection.z);
                }
                else
                {
                    MoveDirection = new Vector3(prevMoveDirection.x, random, prevMoveDirection.z);
                }

                if (!MoveAction.Move(MoveDirection))
                {
                    AttackAction.Attack(MoveDirection);
                }
            }
        }
    }
Exemplo n.º 2
0
    private void MoveInput()
    {
        Vector3 direction = Vector3.zero;

        if (Input.GetKeyDown(KeyCode.W))
        {
            direction.y += 1.0f;
        }
        else if (Input.GetKeyDown(KeyCode.S))
        {
            direction.y -= 1.0f;
        }
        else if (Input.GetKeyDown(KeyCode.A))
        {
            direction.x -= 1.0f;
        }
        else if (Input.GetKeyDown(KeyCode.D))
        {
            direction.x += 1.0f;
            if (transform.localScale.x < 0.0f)
            {
                GetComponent <Animator>().
                transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            }
        }
        else if (Input.GetKeyDown(KeyCode.Q))
        {
            SetMoveTime(_rollTimeSec);
            direction.x = -1.0f;
            direction.y = 1.0f;
        }
        else if (Input.GetKeyDown(KeyCode.Z))
        {
            SetMoveTime(_rollTimeSec);
            direction.x = -1.0f;
            direction.y = -1.0f;
        }
        else if (Input.GetKeyDown(KeyCode.E))
        {
            SetMoveTime(_rollTimeSec);
            direction.x = 1.0f;
            direction.y = 1.0f;
        }
        else if (Input.GetKeyDown(KeyCode.C))
        {
            SetMoveTime(_rollTimeSec);
            direction.x = 1.0f;
            direction.y = -1.0f;
        }

        if (direction != Vector3.zero)
        {
            bool moveResult = false;

            bool do_backstep = false;

            if (IsLockAction() && LockingAction.GetType() == typeof(AttackAction))
            {
                switch (Utility.VecToDir(MoveDirection))
                {
                case BaseAction.NormalDir.BESIDE:
                    if (GetSpriteRenderer().flipX)
                    {
                        if (direction.x > 0.0f)
                        {
                            do_backstep = true;
                        }
                    }
                    else
                    {
                        if (direction.x < 0.0f)
                        {
                            do_backstep = true;
                        }
                    }
                    break;

                case BaseAction.NormalDir.TOP:
                    if (direction.y < 0.0f)
                    {
                        do_backstep = true;
                    }
                    break;

                case BaseAction.NormalDir.DOWN:
                    if (direction.y > 0.0f)
                    {
                        do_backstep = true;
                    }
                    break;
                }
            }

            if (direction.x != 0 && direction.y != 0)
            {
                moveResult = RollAction.Move(direction);
            }
            else
            {
                if (do_backstep)
                {
                    moveResult = BackStepAction.Move(direction);
                }
                else
                {
                    moveResult = MoveAction.Move(direction);
                }
            }
        }

        if (Input.GetMouseButtonDown(0))
        {
            direction = Utility.GetMouseWorldPosition() - transform.position;
            direction = Utility.NormalizeIntVector(direction);

            AttackAction.Attack(direction);
        }
    }