WiseGateLock: Locked Gate
This tutorial was originally created by wisemx. It was originally posted on SDKnuts.net.
Introduction
In this project:
- Player sees a gate with a padlock on it.
- The gate can’t be opened.
- Player breaks lock with crowbar.
- Lock falls to ground, gate can be pushed open.
There are two sample files in the project download at the bottom of this page.
In the first one a phys_hinge
is used for the lock, so it can move on the latch.
In the second example everything is the same except there is no phys_hinge
. The lock has motion disabled until it’s broken by the player. The first example is a little more difficult to create while the second example is rather simple. I’m not sure the first example is even needed but I’ve included it so you have that option. An additional problem with the first example, with the phys_hinge
, is while the HL2 Source engine physics are exceptional they can create problems with objects like this. Compile both examples and run them, decide for yourself which is best for your needs.
Creation
There are multiple methods that can be used for the actual gate. In this project the gate is a func_door_rotating
entirely textured with tools\toolsnodraw
. This allows the actual gate prop to be parented to it. The visible gate is a prop_dynamic
with the model models\props_wasteland\exterior_fence003b.mdl
. This allows for a quick and easy door you don’t have to configure hinges for. If you browse through the many door tutorials from SDKNuts you’ll find several of them use hinges, some are also prop entities, there are advantages to each method and this gives you a lot of flexibility.
In the image to the left, from the 3D viewport in Hammer, you can see the func_door_rotating
textured with nodraw and the only the handle is showing for the prop_dynamic
parented to it. The purple cube is the phys_hinge
for the padlock. The padlock is a prop_physics
using the model models\props_wasteland\prison_padlock001a.mdl
. The latch for this project is func_brush
. This is something that you can be creative with. The properties for this func_brush
make it not-solid, it’s for appearance only. With an output from the padlock when it breaks the latch will disappear. You could also make the latch a func_physbox
so you can break it into pieces. By making it func_brush
we can easily eliminate any problems with physics. For an added effect I’ve included an env_spark
to spark once when the padlock breaks. The rest of the fencing in this project is all prop_static
.
You have a lot of options with your gate, the func_door_rotating
. In the flags for this one I’ve specified that it starts locked and can be opened by touch. Once the gate is fully opened I’m using an output back to itself to Lock
it in the opened position. It will appear to the player that they pushed it open once the lock was broken.
As you can see below most of the work is done by the padlock. The outputs shown here are those from the prop_physics
padlock.
These are the outputs from the second example, without the phys_hinge
.
An additional flag is checked for the second example, Motion Disabled. This will hold it in place until it receives damage from the player’s crowbar. For the rest of the properties used in each project open them in Hammer and have a look. Make some changes and come up with the effect that’s right for your project.