Transform.forward returns global value instead of local

Iv got a basic script that makes an object translate forward based on its transform.forward, which worked fine when I used rigidbodys. Now iv converted to the raycasting system and using the code

function FixedUpdate(){
transform.Translate(transform.forward);
}

which is the whole code and they dont move forward based on their forward facing, rather they move based on the global ‘forward’ any ideas?

Either you need to tell Translate you are using world space or you need to use local forward:

        transform.Translate(transform.forward, Space.World); // a bit mad really

        //or

        transform.Translate(Vector3.forward);