Unity 2D: Run while holding key and having energy left


Unity 2D: Run while holding key and having energy left

I decided to try and add a Run feature to my 2D controller today.
Couldn’t find what I wanted to achieve online, but after trial and error I got something working.

This is using the “new” input system. Some code is not shown, but you get the idea.

– Hold key down while moving to enable running.
– While running, runTimeCounter clocks up.
– Once runTimeCounter hits runTimeLimit, you can no longer run.
– When isRunning is false, runTimeCounter regenerates (Goes back to 1f, thus enabling running again)

今日は2Dコントローラの走るを実装してみた。
Unityの新Input Systemで求めていたコードがなかったので、試行錯誤でやってみたけどもっと良い書き方があるのは明確だ。上達したら見直す。

・キーを押しっぱなしの時に走る
・走っている最中 runTimeCounterの数値が上がる
・runTimeLimitに到達すると走れなくなる
・走っていない状態でrunTimeCounterの数値が下がる

    float runTimeLimit = 4f;
    float runTimeCounter = 1f;
    float horizontal;
    bool isRunning = false;

    void FixedUpdate()
    {
        // Walk, Run action
        if (isRunning && runTimeCounter <= runTimeLimit)
        {
            runTimeCounter += Time.deltaTime;
            rb.velocity = new Vector2(runSpeed * horizontal * speed,   rb.velocity.y);

            if (runTimeCounter >= runTimeLimit)
            {
                isRunning = false;
            }
        }
        else
        {
            rb.velocity = new Vector2(horizontal * speed, rb.velocity.y);

            while (runTimeCounter > 0f)
            {
                runTimeCounter -= Time.deltaTime;
            }
        }

        IsGrounded();
        WallSlide();
    }

    public void Run(InputAction.CallbackContext context)
    {

        if (context.performed)
        {
            isRunning = true;
        }

        if (context.canceled)
        {
            isRunning = false;
        }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *