How do i make a gameobject accelerate?

So im using c# and i have the basic movement script:

using UnityEngine;
using System.Collections;

public class TransformFunctions : MonoBehaviour
{
	public float moveSpeed = 10f;
	public float turnSpeed = 50f;
	
	
	void Update ()
	{

		if(Input.GetKey(KeyCode.UpArrow))
			transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
		
		if(Input.GetKey(KeyCode.DownArrow))
			transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
		
		if(Input.GetKey(KeyCode.LeftArrow))
			transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
		
		if(Input.GetKey(KeyCode.RightArrow))
			transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
	}
}

I want the gameobject to accelerate from 0 to lets say 10 with maby 2/sec, and not start at 10. My C# skills are VERY restricted, but i do know a little of the basics. I would love to get a ready script if that is possible, thanks for any answers.

This should have what you’re looking for.

gameobject.rigidbody.AddForce(0,0,0); for a specific direction x,y,z

If the object is pointing forward just apply gameobject.rigidbody.AddForce(gameobject.transform.forward * (desired speed * accelerationFactor));

is that what you are asking?

If you need an incremental increase use a ramp system

var ramp : double = 0.05;

when you increase it use

ramp += ramp;

and add it where the acceleration factor would be applied

I took the liberty of rewriting a bit of your code.
Essentially in order to do what you want it to do you have to add a few variables to account for acceleration, current velocity and some other general maths.

using UnityEngine;
using System.Collections;

public class TransformFunctions : MonoBehaviour
{
    public float turnSpeed = 50f;

    public float _Velocity = 0.0f;      // Current Travelling Velocity
    public float _MaxVelocity = 1.0f;   // Maxima Velocity
    public float _Acc = 0.0f;           // Current Acceleration
    public float _AccSpeed = 0.1f;      // Amount to increase Acceleration with.
    public float _MaxAcc = 1.0f;        // Max Acceleration
    public float _MinAcc = -1.0f;       // Min Acceleration


    void Update()
    {

        if (Input.GetKey(KeyCode.UpArrow))
            _Acc += _AccSpeed;

        if (Input.GetKey(KeyCode.DownArrow))
            _Acc -= _AccSpeed;

        if (Input.GetKey(KeyCode.LeftArrow))
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.RightArrow))
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);


        if (_Acc > _MaxAcc)
            _Acc = _MaxAcc;
        else if (_Acc < _MinAcc)
            _Acc = _MinAcc;

        _Velocity += _Acc;

        if (_Velocity > _MaxVelocity)
            _Velocity = _MaxVelocity;
        else if (_Velocity < -_MaxVelocity)
            _Velocity = -_MaxVelocity;

        transform.Translate(Vector3.forward * _Velocity * Time.deltaTime);
    }
}

So now all the user handles is the acceleration and deceleration of the object and the position is automatically calculated each update frame. This way the object will still keep moving even if the user is not sending the game any input.

Try this code:

public class ScriptNameHere : MonoBehavior
{
     void Update
     {
          var x = Input.GetAxis("Horizontal")* Time.deltaTime * 8.0f;
          var y = Input.GetAxis("Vertical")* Time.deltaTime * 8.0f;
          transform.translate(x,y,0);
}

Or if you’re doing 3D, do transform.translate(x, 0, y);

puedes agregar suavidad simplemente multiplicando tu velocidad * distancia * Time.deltatime
ejemplo:

float speed = 5;
float Distance = Vector3.Distance(transform.position,target.transform.position);

transform.position = Vector3.MoveTowards(transform.position, target.transform.position, (speed * Distance) * Time.deltaTime);

// obtendrás un tipo de desaceleración suave agradable a la vista sin tener que usar rigidBody ni otros componentes.