Rotate to mouse direction

I am a scripting beginner, and i wanted help in this script:

using UnityEngine;
using System.Collections;
 
public class RotateTurret : MonoBehaviour
{
 
	// speed is the rate at which the object will rotate
	public float speed;
 
	void FixedUpdate () 
	{
    	// Generate a plane that intersects the transform's position with an upwards normal.
    	Plane playerPlane = new Plane(Vector3.up, transform.position);
 
    	// Generate a ray from the cursor position
    	Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
 
    	// Determine the point where the cursor ray intersects the plane.
    	// This will be the point that the object must look towards to be looking at the mouse.
    	// Raycasting to a Plane object only gives us a distance, so we'll have to take the distance,
    	//   then find the point along that ray that meets that distance.  This will be the point
    	//   to look at.
    	float hitdist = 0.0f;
    	// If the ray is parallel to the plane, Raycast will return false.
    	if (playerPlane.Raycast (ray, out hitdist)) 
		{
        	// Get the point along the ray that hits the calculated distance.
        	Vector3 targetPoint = ray.GetPoint(hitdist);
 
        	// Determine the target rotation.  This is the rotation if the transform looks at the target point.
        	Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
 
        	// Smoothly rotate towards the target point.
        	transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
		}
    }
}

I found it in Unity’s official wikia (something like that). It does exactly what i want, that is rotate a turret towards the mouse in the Y axis. The problem is that i get this error:

“Object reference not setup to an instance of an object”

It’s in line 16 i think. It’s the ray ray part:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

The error says you need a camera in the scene with the tag “Main Camera”