How to move character Forward on It's own Axis, and not the World Axis?

I used this for a character and then i used it for another character too. They were both facing opposite directions and it was funny. one of them walked forward,and one of them walked backwards.

So i know that it’s probably because they’re walking using the World axis and not their own.

This is what i used and i attached the script to both characters:

void Update () {
transform.position += new Vector3( 0, 0, 0.1f);

I’m guessing this is the wrong thing to use.

**By the way. I just have the character with a Rigid body. It’s not a Character Controller.

*****UPDATE. I was looking around in the web and I found
transform.Translate(0, 0, 0.02f, Space.Self )

I used it and it kinda works. But the character for some reason starts changing rotation gradually while walking. So i guess maybe this is not a good method to use?

// Move translation along the object’s z-axis
transform.Translate (Vector3.forward * (speed) * Time.deltaTime);
// speed will be a float variable.