コード例 #1
0
    private void handleMovement()
    {
        // no y axis velocity while stands
        if (controller.isGrounded)
        {
            velocity.y = 0;
        }
        // handles basic state
        if (Input.GetKey(KeyCode.RightArrow))
        {
            direction = 1;
            if (transform.localScale.x < 0f)
            {
                transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            }

            baseState = BaseState.MOVE;
        }
        else if (Input.GetKey(KeyCode.LeftArrow))
        {
            direction = -1;
            if (transform.localScale.x > 0f)
            {
                transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            }

            baseState = BaseState.MOVE;
        }
        else
        {
            direction = 0;
            baseState = BaseState.IDLE;
        }
        // handles aditional state
        if (controller.isGrounded && Input.GetKeyDown(KeyCode.UpArrow))
        {
            isJumping       = true;
            velocity.y      = jumpSpeed;
            additionalState = AdditionalState.JUMP;
        }
        else if (isJumping && controller.isGrounded)
        {
            isJumping       = false;
            additionalState = AdditionalState.NONE;
        }
        // sets state to to animator
        animator.SetInteger("baseState", (int)baseState);
        animator.SetInteger("additionalState", (int)additionalState);
        // calculates and apllies velocity
        var smoothedMovementFactor = controller.isGrounded ? groundDamping : airDamping;

        velocity.x  = Mathf.Lerp(velocity.x, direction * runSpeed, Time.deltaTime * smoothedMovementFactor);
        velocity.y += gravity * Time.deltaTime;
        controller.move(velocity * Time.deltaTime);
        velocity = controller.velocity;
    }
コード例 #2
0
    public override void Execute(CharacterMono speller, CharacterMono target)
    {
        base.Execute(speller, target);

        target.AddBattleState(AdditionalState.DeepCopy());
    }