(Unity)入力に応じて、戦車の速度を徐々にあげていく方法

(スクリプト)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TankMovement_1 : MonoBehaviour
{
    private float moveS;
    public float turnS;
    private Rigidbody rb;
    private float movementInputValue;
    private float turnInputValue;

    private void Awake()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        TnakMove();
        TankTurn();
    }

    void TnakMove()
    {
        movementInputValue = Input.GetAxis("Vertical");
        Vector3 movement = transform.forward * movementInputValue * moveS * Time.deltaTime;
        rb.MovePosition(rb.position + movement);

        // ★加速度の設定
        // 入力値の二乗の取得
        var inputValue = movementInputValue * movementInputValue;

        // 入力値の二乗が最大値(1)に達したら速度を徐々に増加させる。
        if(inputValue == 1)
        {
            moveS += Time.deltaTime;
            print(moveS);

            // 最大速度の設定
            if(moveS > 7)
            {
                moveS = 7;
            }
        }

        // 入力値が0になったら速度を0に戻す。
        if(inputValue == 0)
        {
            moveS = 0;
        }
    }

    void TankTurn()
    {
        turnInputValue = Input.GetAxis("Horizontal");
        float turn = turnInputValue * turnS * Time.deltaTime;
        Quaternion turnRotation = Quaternion.Euler(0, turn, 0);
        rb.MoveRotation(rb.rotation * turnRotation);
    }
}

(確認)

  • 速度が徐々に増加していけば成功