Имхо много лишнего по указанной постановке задачи...
public class Pl : MonoBehaviour {
public float speed;
void Start ()
{
speed = 1;
}
void Update ()
{
Vector3 temp = transform.position;
if(Input.GetKey(KeyCode.UpArrow))
{
temp.y += Time.deltaTime * speed;
}
else
{
temp.y -= Time.deltaTime * speed;
}
temp.y = Mathf.Clamp(temp.y, -4f, 4f);
transform.position = temp;
}
}