I would create a movie table with MovieName, director, producer, actor1, actor2, etc. fields
Create a table of people and put all actors, directors, etc in that table with an automatically-generated primary key.
Fill in the roles in the movies using the primary key for the relevant person.
I strongly advise against actor1, actor2, director1, director2, etc. fields. OP is on the right track, though it sounds like it may be appropriate to add Job to the relationship to turn it into a ternary relation.
The actor1, actor2, etc solution seems wrong to me too but I haven't thought of an elegant solution yet to the situation where you have a varying number of fields for a record. I don't see how you avoid that here. The number of roles in a movie varies. The number of movies a given person is in varies. The number of roles a given person plays in a movies varies.
You could add a table for each person and create a record for each role they played in each movie. But how do you then query for a list of movies with their director? You're going to join all the person tables?
movies: movie PK, movie_name
persons: person PK, person_name
roles: role PK, role_name
credits: movie PK/FK, role PK/FK, person PK/FK
One could ask in SQL:
SELECT m.movie_name, p.person_name
FROM credits c
INNER JOIN roles r ON c.role = r.role
INNER JOIN movies m ON c.movie = m.movie
INNER JOIN persons p ON c.person = p.person
WHERE r.role_name = 'Director'
ORDER BY m.movie_name, p.person_name