Portal - Tutorial - Lift Platform
This tutorial will show how to create the Lift Platform seen in the Portal test chambers. The lift usually starts in its raised position, and lowers when a certain object is activated, such as an energy pellet catcher or a switch. The lift then raises when the player steps on it.
Construction
Step 1
Create a 16w*16l*128h
brush textured with tools/toolsinvisible
. Tie this brush to a func_door
entity and make sure all of its flags are unchecked. Next, set the following keyvalues on it:
Property Name | Value |
---|---|
Name | lift |
Speed | 20 |
Start Sound | apc_engine_start |
Stop Sound | apc_engine_stop |
Delay Before Reset | -1 |
Move Direction | 90 0 0 |
Step 2
Create a 24w*24l*136h
12-sided cylinder and position it so it's in the same place as the lift
brush. Tie it to a func_brush
and set its Name to brush_lift
and its Parent to lift
.
Finally, texture the sides of the cylinder with metal/metal_lift001
.
Step 3
Create a prop_dynamic
entity and set its Name to model_lift_platform
, its Parent to lift
and its World Model to models/props/lift_platform.mdl
. Position it on top of the brush_lift
brush so its origin is 2 units below the top of the brush.
Step 4
Create a 120w*120l*1h
brush. Texture the top and bottom sides of the brush with glass/glasswindow_frosted_003
, and texture all of the sides with tools/toolsnodraw
. Position the brush so its in the middle of the model_lift_platform
entity, with its bottom side being 6 units above the origin of model_lift_platform
.
Next, create a 128w*128l*4h
brush textured with tools/toolsplayerclip.
Position it so it surrounds the model_lift_platform entity
with its bottom side being 4 units above the origin of model_lift_platform
.
Now, select both the glass brush and the playerclip brush and tie them to a single func_brush
entity. Set its Name to lift_brush_2
and set its Parent to lift
.
Step 5
Create a 112w*128l*92h
brush textured with tools/toolstrigger
. Tie it to a trigger_multiple
entity and set its Name to lift_up_trigger
, its Parent to lift
and Start Disabled to Yes
. Next, add the following outputs to it:
My Output | Target Entity | Target Input | Parameter | Delay | Only Once | |
---|---|---|---|---|---|---|
OnTrigger | lift | Close | 0.00 | No | ||
OnEndTouch | lift | Open | 0.00 | No |
The Lift Platform is now completed and ready to be implemente in a map.
Implementation
Step 1
Place the lift where it should be in the map. The top of the lift_brush_2
playerclip brush should be 2 units below the floor level of the upper floor. If the lift needs to travel more than 128 units, stretch the brush_lift
and lift
brushes down to the lower floor level. The length of the lift
brush determines how far the Lift Platform travels.
Step 2
Add an output to the entity that will activate the lift that sends the Open input to lift
and the Enable input to lift_up_trigger
.