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;
}
}