How to make the player move where camera is facing?

I have a camera orbiting the player and want my character to move in the direction the camera is facing. I don’t want the player to always turn as i move the camera, like when standing still. I want him to start running in the direction the camera is facing when “W” is pressed and strafe left and right with “A” and “D”. I’m a total noob and would need a proper example to learn from.

Here’s my camera script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ThirdPersonCamera : MonoBehaviour

private const float Y_ANGLE_MIN = -89.9f;
private const float Y_ANGLE_MAX = 89.9f;

public Transform lookAt;
public Transform camTransform;

private Camera cam;

public float sensitivityX = 4.0f;
public float sensitivityY = 4.0f;
public float distance = 3.0f;
private float currentX = 0.0f;
private float currentY = 0.0f;

private void Start()
    camTransform = transform;
    cam = Camera.main;

private void Update()
    currentX += Input.GetAxis("Mouse X") * sensitivityX;
    currentY -= Input.GetAxis("Mouse Y") * sensitivityY;

    currentY = Mathf.Clamp(currentY, Y_ANGLE_MIN, Y_ANGLE_MAX);

private void LateUpdate()
    Vector3 dir = new Vector3(0, 0, -distance);
    Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);
    camTransform.position = lookAt.position + rotation * dir;


See my answer here
EDIT: Oops I missed the part about strafing.
You simply make the player look the same way the camera is looking (I suggest you use an empty and make it the parent of the camera. this way you can mess with the empty and your camera offset will always be intact)

Let’s assume cameraAnchor is your empty (no guarantee for correct syntax):

Transform cameraAnchor = <reference your empty here>

if(Input.getKey(KeyCode.W)) {
if(Input.getKey(KeyCode.S)) {
    transform.Translate(cameraAnchor.forward * -1);
if(Input.getKey(KeyCode.D)) {
if(Input.getKey(KeyCode.A)) {
    transform.Translate(cameraAnchor.right * -1);