Portal - Tutorial - Energy Ball Launcher and Catcher
Introduction
This page will show you how to create Energy Ball Launchers and Catchers.
Launcher
Launcher Base
Create a 8w*128l*128h brush with the nodraw texture. Tie this brush to a func_detail. Texture the front face with concrete/concrete_modular_wall001a and the border faces with signage/hazard_orange_03b. Rotate the textures if they aren't aligned.
Launcher Model
Create a prop_dynamic entity and enter the following properties:
| Property Name | Value |
|---|---|
| Name | ball_spawner_prop |
| World Model | models/props/combine_ball_launcher.mdl |
Launcher Lighting
Create a light entity and enter the following properties:
| Property Name | Value |
|---|---|
| Brightness | 218 76 26 30 |
| BrightnessScaleHDR | 218 76 26 30 |
Place the light inside of the Launcher Model.
Launcher Clipping
Create a 32w*64l*64h brush with the playerclip texture. Position this brush in front of the Launcher Base.
Launcher noportal
Create a 8w*96l*96h brush with the invisible texture.
Launcher Collision
Create a 1w*16l*16h brush with the nodraw texture. Position this brush in the front in the model. Tie this brush to a func_detail.
Launcher Spawner
Create a point_energy_ball_launcher entity and enter the following properties:
| Property Name | Value |
|---|---|
| Name | energy_ball_launcher |
| Ball count | 1 |
| Min ball speed | 200 |
| Max ball speed | 200 |
| Ball radius | 12.0 |
| Ball Respawn Time | 2.0 |
Min ball speed and Max ball speed values can be changed, but make sure they are the same value. The minimum value to enter is 200 and the max is 400.Sometimes under flags, the launcher starts inactive and gets activated when you touch a trigger.
Enter the following output:
| My Output | Target Entity | Target Input | Parameter | Delay | Only Once | |
|---|---|---|---|---|---|---|
| OnPostSpawnBall | ball_spawner_prop | ball_spawner_prop | close | 0.00 | No |
Ball Catcher
The target is comprised of eleven entities:
- ambient_generic
- env_sprite
- filter_combineball_type
- logic_relay
- point_spotlight
- prop_dynamic (2)
- trigger_multiple
The models used are:
/models/props/combine_ball_catcher.mdl/models/Effects/combineball.mdl
To create the catcher:
- 1. Create a
prop_dynamicentity with aWorld Modelkey pointing to "models/props/combine_ball_catcher.mdl" and theNameset to "ball_trap". Disable the shadows. - 2. Place the entity where you want it in your map.
- 3. Create a
filter_combineball_typeentity and name it "filter_ball". - 4. Set the ball type for "filter_ball" to "Launched by
point_combine_ball_launcher". - 5. Create a cylinder brush with 8 faces, and size it to same the length and width, as the Dynamic prop. Texture it with the trigger texture to cover the opening of the "ball_trap" model.
- 6. Turn this brush into a
trigger_multipleentity and name it "trigger_ball_trap", also set thefilter_nameto "filter_ball". Make sure to have the flags Physics Objects selected. - 7. Create a
prop_dynamicentity with aWorld Modelof "models/Effects/combineball.mdl", set itsParentto "ball_trap" andNameit "ball_trap_ball". Also make sure to haveStart Disabledset to "Yes". - 8. Create a
env_spriteentity, set itsSprite Nameto "sprites/physring1.vmt", set itsParentto "ball_trap" andNameit "ball_trap_sprite". Make sure to have 'Render mode' set to Additive. Also, the 'Scale should be set to 1.5 'Size of Glow proxy' set to 0, and HDR Color Scale set to 1.0, yet all these values can be changed to your liking. Also be sure to have 'Render Fx' set to Distort. - 9. Place both "ball_trap_ball" and "ball_trap_sprite" somewhere near the front of the "ball_trap" model.
- 10. Create a
logic_relayentity and name it "relay_ball_trap_spawn". - 11. Open up the
logic_relayproperties and set these outputs:
- 12. Create a
point_spotlightentity (Shift+E) and name it "ball_trap_spotlight". You may also want to disable theDynamic Lightflag. - 13. Set the
Colorfor "ball_trap_spotlight" to "218 76 26", theBeam Lengthis normally the length of the room, andBeam Widthsomewhere between 20 and 40. - 14. Create an
ambient_genericentity andNameit "ball_trap_sound" - 15. Set the
Sound Namekey for "ball_trap_sound" to "AlyxEMP.Charge". Set it's Source Entity Name to the Main Prop_dynamic. - 16. Open the property window for "trigger_ball_trap" and set these outputs:
- Then under the Flags tab un-check "clients" and check everything else.
The Aperture Science High Energy Pellet Target is now complete.
The theory
These instructions illustrate the most basic use of the launcher and catchers. Theoretically you should be able to have one launcher and multiple catchers, or even catchers that reset themselves.
See also
External links
- Example map Example map using this tutorial. VMF included.