You can use velocity for this purpose. Also you can improvise your code if you have to have inputs through arrow keys and WASD.
Rigidbody _rb;
float _speed = 30f;
void Start ()
{
_rb = character.GetComponent<Rigidbody> ();
}
void Update ()
{
float horizontal = Input.GetAxis ("Horizontal");
float vertical = Input.GetAxis ("Vertical");
Vector3 fVelocity = new Vector3 (horizontal, 0, vertical) * _speed;
_rb.velocity = fVelocity;
}
If you don't want to use WASD then use your code but change velocity instead of transform.position