Convex Doors are the semi-circular rotating doors seen in Episode 2 of the game. They're actually constructed using a Rotate-Rise Sector, minus the rise aspect. The geometry of the construction is somewhat difficult to perfect, but ultimately the result is worth it.
The first few steps are actually the most difficult. Begin by inserting two vertices on a wall, and use
C to create a semi-circle jutting out from the wall (to recapitulate for those unfamiliar with the circle operation: pressing
C again will cancel the circle creation, pressing
Spacebar will complete the operation, and
- fine-tune the vertex resolution of the circle). Next, create a rectangle within the semi-circle that almost spans its length. With some trickery, this rectangle is going to become a pair of semi-circular doors.
C on the lower wall of the rectangle to form another semi-circle, which sticks slightly out into the nearby room. Insert two vertices on the upper wall of this new semi-circle (newly inserted vertices are shown as green). The thin gap created by these vertices is going to prevent the upcoming circle operation from overlapping the semi-circle you just finished making.
C one final time on the upper wall of the semi-circle to complete your door sectors. Now that the circle operations are finished, you can split the doors into two separate sectors (use the sector joining function (
J) to eliminate the tiny red-walled sector that remains after splitting the doors). This is the basic setup for a Convex Door. The semi-circles don't have to be 100% perfect: The main objective is to avoid collisions between the doors and the surrounding walls (try to imagine each door rotating 90 degrees in opposite directions). Remember, you can always do touch-ups when the effect is finished.
Alt + S to turn the doors into valid player space. Tag each of them
[0,30]. This designates them as Rotate-Rise Sectors.
Place the following in each door sector:
S[Channel,0], A[0,Channel]. Both
S[Channel,0] must be angled down! The palette value of each
S[Channel,0] determines the direction of rotation. A palette value of 0 is anticlockwise, and a palette value of anything greater than 0 is clockwise. Add an
M[StopSound,StartSound] to one of the two door sectors. In the official maps they use
M[0,82], but I recommend something more realistic... like
M[0,261]. Finally, place an
S[Channel,1] slightly below the center of the whole circular structure. It will act as the pivot point for each door's rotation. You may have to adjust its position later if your doors malfunction and collide with the walls.
Enter 3D mode, and lower each door sector's ceiling until it touches the floor. Texture the door frames, then texture all of the remaining walls with a
DOORTILE texture (check the "References - Special Textures" section for a listing of all the
DOORTILE textures). The
DOORTILE textures have the unique ability to be linked to effects with a
Channel. Tag all of the
[0,Channel]. This will allow the player to operate the door simply by pressing the action button on the walls of the door. Once the texturing is complete, return to 2D mode. Turn grid locking off (with
L), and move the doors as close together as possible, to make the gap between them less noticeable. You will have to realign a couple of textures after doing this. The door should now function in the game.
- Instead of tagged
DOORTILEtextures, you could use a Switch tagged
[ActivationSound,Channel], or a
NumberOfActivationsis how many times the Touchplate will activate the Convex Door (0 being infinite).
- The doors can raise or lower as well (check "Rotating Sectors - B : Rotate-Rise Sectors" for details).
- If a specific part of the door doesn't seem to respond to the action button, double-check your wall Lo-Tags. You may have assigned that specific Lo-Tag on the wrong side of the wall (remember that red-lined walls can have separate attributes on each side).
- As I said earlier, you may have to adjust your
S[Channel,1]pivot point position to get the door's rotation just right.
- If your doors seem to "jump" for a split second when you activate them, this means that your
S[Channel,0]sprites have decided to raise themselves a unit higher than the floor. This is why I suggested that you lower the ceiling to the floor, because doing the opposite can potentially cause this problem. To fix it, simply lower the floor back down to ground level, make sure the sprites are "grounded", then lower the ceiling to the floor.