Orb Catcher Tutorial
From ThinkingWithPortals
A tutorial originally by Rivid31 on how to create a fully functioning Orb Catcher, as seen in Portal.
Contents |
Info
Like the Orb Launcher, this entity is not created as a prefab in Valve. We will have to construct it from several other entities and set up some Input/Output for these entities. The Orb Catcher is somewhat more complicated than the Orb Launcher, but not by much.
The Entities
Here are the required entities which are needed to make the Orb Catcher.
prop_dynamic
The base of the Orb Catcher. This is the model you see on the wall that catches the ball. You'll want to cut a hole in the wall for the back of the model as well. This hole should be 32 units tall, 64 units wide, and 32 units deep.
The prop is located at 'models/props/combine_ball_catcher.mdl'. Set its name to catcher.
The "caught" combine ball. This is the ball you see inside the catcher model after it has caught a ball. The prop is located at 'models/effects/combineball.mdl'.
- Set "Start Disabled" to Yes.
- Set its name to fake_orb.
env_sprite
You will need to make two of these entities. These will create the glowing effect of a caught ball.
- Set the "Sprite Name" of the first to 'materials/sprites/physring1.vmt'.
- Set "Render FX" to Distort.
- Set "Render Mode" to Additive.
- Set "Framerate" to 30.
- Set "Scale" to 1.5.
- Set "Size of Glow Proxy" to 0.
- Set its name to ring_sprite.
- Make sure both flags are unchecked.
- Set the "Sprite Name" of the second to 'materials/sprites/glow01.vmt'.
- Set "Render FX" to Distort.
- Set "Render Mode" to World Space Glow.
- Set "Framerate" to 30.
- Set "Scale" to 2.
- Set "Size of Glow Proxy" to 0.
- Set its name to glow_sprite.
- Make sure both flags are unchecked.
filter_combineball_type
This makes sure the catcher only catches combine balls, and not other props like cameras, or boxes.
- Set the "Ball Type" to Launched by point_combine_ball_launcher.
- Set its name to catch_filter.
ambient_generic
This will make the correct sound when a ball is caught.
- Set the "Sound name" to 'AlyxEMP.Charge'.
- Make sure "Start Silent" and "Is NOT Looped" are flagged.
- Set its name to catch_sound.
point_spotlight
This will create the orange light that comes out of the catchers.
- Set "Color (R G B)" to 218 76 26
- Set "Spotlight length" to the length of the room, or slightly shorter.
- Set "Spotlight width" to 25
- Set its name to catch_spotlight
trigger_multiple
The last thing you will need to make is a brush-based entity.
Create a cylindrical brush with 10 sides and the trigger texture. Make the cylinder with a diameter of 44 units, and a height of 32 units. Tie the brush to a trigger_multiple.
- Set the "Filter name" to catch_filter.
- Uncheck all flags except everything.
- Set its name to catch_trigger.
The Entity Placements
- Place the catcher where you want it to be in the map. Place the model so the front section is flush with the wall, and the back part is in your hole you cut out. Don't forget to cover the back of your hole to prevent leaks.
- Place the ring_sprite, glow_sprite and fake_orb flush with the wall.
- Place the catch_spotlight a few units in front of the catcher model so the model doesn't block the light. Make sure the spotlight is pointing away from your model.
- Place the trigger_multiple so it fits within the 3 inner 'arms' of the catcher. Set the front face of the cylinder flush with the end of these 3 shorter, inner 'arms'.
- Place the catch_filter and catch_sound anywhere near your catcher.
The I/O Setup
The only entity that has any outputs is your trigger_multiple.
catch_trigger
Add the following outputs to your catch_trigger
- OnTrigger -> fake_orb -> Enable
- OnTrigger -> catch_sound -> PlaySound
- OnTrigger -> !activator -> Kill
- OnTrigger -> glow_sprite -> ToggleSprite
- OnTrigger -> ring_sprite -> ToggleSprite
- OnTrigger -> catcher -> SetAnimation -> close
- OnTrigger -> catch_trigger -> Disable
- OnTrigger -> logic_timer -> Disable (logic_timer is the timer set up to launch the ball. You must disable this or your launcher will continue to launch balls
- OnTrigger -> catch_spotlight -> LightOff
You will also need to add outputs to this trigger to do whatever this catcher is set up for (open doors, activate a lift, change indicator strips... etc).
