You have to consider what is meant by c being constant. What it means is c is "invariant", in that anyone will measure it as having the the same value relative to themselves, regardless of their motion with respect to anyone else.
To illustrate, we will use a space-time diagram.
It is a plot of distance vs time. Time is in the vertical direction and distance is the horizontal direction. lines drawn on the diagram represent objects moving at different speeds. A vertical line represents an object that is "at rest" relative to the diagram (as you move along the line you progress through time but not distance), A tilted line is for something moving relative to the diagram. ( you move through space as you move along the line as well as time.)
Scale is set so that c is a 45 degree angle.
Here is such a diagram with three lines representing two velocities.
The green line is represents motion at 0.5c in one direction, while the blue line represents motion at 0.5c in the other direction. The yellow lines are light. Each line is marked at equal intervals marking off equal points in time. Note that light leaving each line at its time interval of 1 reaches the other line at its time interval of 3.
View attachment 130602
We can redraw this as it would appear if the green line were considered "at rest". This is done by rotating the diagram so that the green line is straight up and the blue line leans further to the left. However, just turning the image won't do. As I said, the speed of light is invariant, which means in the new diagram the line representing light must stay at 45 degree angles to vertical. Also, the fact that the light leaves one line at 1 and arrives at the other at three can't be changed either. To accomplish this, we need to draw the new diagram like this:
View attachment 130603
We maintained all the requirements, but we had to spread out the time intervals for the Blue line. In the first diagram, When it was 1 on the Green line, looking directly across, we saw that it was 1 on the Blue line. This means that they kept the same time at the same rate. Now, when it is 1 on the green line, it is only 0.6 on the Blue. It takes longer for Blue to go from 0 to one than it take for green to do so. Time ticks slower for Blue than it does from Green.
If we again redraw the diagram so that Blue is "at rest" we get this.
View attachment 130604
Now When blue reads 1, Green is at 0.6 and time ticks slower for Green. This is how time dilation works. Every clock considers itself "at rest" (It is not moving relative to itself) and considers all clocks moving relative to it as ticking slow.