Creating an energy ball launcher and catcher: Difference between revisions
(cleanup (please don't spam the links to related articles. link the first instance and code-tag the rest. TLDR: In formatting, less still is more.)) |
m (minoro) |
||
Line 3: | Line 3: | ||
== The Aperture Science High Energy Pellet Launcher == | == The Aperture Science High Energy Pellet Launcher == | ||
[[Image:launcher-catcher01.jpg|right|thumb|Launcher assembly]] | [[Image:launcher-catcher01.jpg|right|thumb|Launcher assembly.]] | ||
The launcher is comprised of three entities: | The launcher is comprised of three entities: | ||
Line 14: | Line 14: | ||
To create the launcher: | To create the launcher: | ||
:1. Create a <code>prop_dynamic</code> entity (<code>Shift+E</code>) with a World Model set to "<code>models/props/combine_ball_launcher.mdl</code>" and the Name key of "ball_launcher". | :1. Create a <code>prop_dynamic</code> entity (<code>Shift+E</code>) with a <code>World Model</code> set to "<code>models/props/combine_ball_launcher.mdl</code>" and the <code>Name</code> key of "ball_launcher". | ||
:2. Place the new entity where you want it in your map. | :2. Place the new entity where you want it in your map. | ||
:3. Create a <code>point_energy_ball_launcher</code> entity and set its name to "ball". | :3. Create a <code>point_energy_ball_launcher</code> entity and set its name to "ball". | ||
Line 31: | Line 31: | ||
| [[Image:Io11.png]] || OnPostSpawnBall || ball_launcher_shield || Enable || <none> || 2.00 || No | | [[Image:Io11.png]] || OnPostSpawnBall || ball_launcher_shield || Enable || <none> || 2.00 || No | ||
|} | |} | ||
:9. Adjust the [[Keyvalue|keyvalues]] of <code>point_energy_ball_launcher</code> to set the desired | :9. Adjust the [[Keyvalue|keyvalues]] of <code>point_energy_ball_launcher</code> to set the desired <code>Direction</code>, <code>Speed</code>, <code>Type</code>, and <code>Life</code> of the ball. | ||
The Aperture Science High Energy Pellet Launcher is now complete. | The Aperture Science High Energy Pellet Launcher is now complete. | ||
{{note| If necessary, you can also place the <code>point_energy_ball_launcher</code> outside of the " | {{note|If necessary, you can also place the <code>point_energy_ball_launcher</code> outside of the "ball_launcher" model and remove the "ball_launcher_shield" outputs.}} | ||
== The Aperture Science High Energy Pellet Target == | == The Aperture Science High Energy Pellet Target == | ||
[[Image:launcher-catcher02.JPG|right|thumb|Target assembly]] | [[Image:launcher-catcher02.JPG|right|thumb|Target assembly.]] | ||
The target is comprised of eleven entities: | The target is comprised of eleven entities: | ||
Line 55: | Line 55: | ||
To create the catcher: | To create the catcher: | ||
:1. Create a <code>prop_dynamic</code> entity with a World Model key pointing to "<code>models/props/combine_ball_catcher.mdl</code>" and the Name set to "ball_trap". | :1. Create a <code>prop_dynamic</code> entity with a <code>World Model</code> key pointing to "<code>models/props/combine_ball_catcher.mdl</code>" and the <code>Name</code> set to "ball_trap". | ||
:2. Place the entity where you want it in your map. | :2. Place the entity where you want it in your map. | ||
{{note|The model requires a hole of at least 32 units square and 8 units deep. Otherwise, when the model animates to its closed state, part of the model will be hidden in a wall.}} | {{note|The model requires a hole of at least 32 units square and 8 units deep. Otherwise, when the model animates to its closed state, part of the model will be hidden in a wall.}} | ||
:3. Create a <code>filter_combineball_type</code> entity and name it filter_ball. | :3. Create a <code>filter_combineball_type</code> entity and name it "filter_ball". | ||
:4. Set the ball type for "filter_ball" to "Launched by <code>point_combine_ball_launcher</code>". | :4. Set the ball type for "filter_ball" to "Launched by <code>point_combine_ball_launcher</code>". | ||
:5. Create a brush with the trigger texture to cover the opening of the "ball_trap" model. | :5. Create a brush with the trigger texture to cover the opening of the "ball_trap" model. | ||
:6. Turn this brush into a <code>trigger_multiple</code> entity and name it "trigger_ball_trap", also set the filter_name to "filter_ball". | :6. Turn this brush into a <code>trigger_multiple</code> entity and name it "trigger_ball_trap", also set the <code>filter_name</code> to "filter_ball". | ||
:7. Create a <code>prop_dynamic</code> entity with a World Model of "<code>models/Effects/combineball.mdl</code>", set its | :7. Create a <code>prop_dynamic</code> entity with a <code>World Model</code> of "<code>models/Effects/combineball.mdl</code>", set its <code>Parent</code> to "ball_trap" and <code>Name</code> it "ball_trap_ball". | ||
:8. Create a <code>env_sprite</code> entity, set its Sprite Name to "<code>sprites/physring1.vmt</code>", set its | :8. Create a <code>env_sprite</code> entity, set its <code>Sprite Name</code> to "<code>sprites/physring1.vmt</code>", set its <code>Parent</code> to "ball_trap" and <code>Name</code> it "ball_trap_sprite". | ||
:9. Place both "ball_trap_ball" and "ball_trap_sprite" somewhere near the front of the "ball_trap" model. | :9. Place both "ball_trap_ball" and "ball_trap_sprite" somewhere near the front of the "ball_trap" model. | ||
:10. Create a <code>logic_relay</code> entity and name it "relay_ball_trap_spawn". | :10. Create a <code>logic_relay</code> entity and name it "relay_ball_trap_spawn". | ||
Line 74: | Line 74: | ||
| [[Image:Io11.png]] || OnSpawn || ball_trap_sprite || SetParentAttachment || ball_attachment || 0.00 || No | | [[Image:Io11.png]] || OnSpawn || ball_trap_sprite || SetParentAttachment || ball_attachment || 0.00 || No | ||
|} | |} | ||
:12. Create a <code>path_track</code> entity and name it "path_ball_trap_01", set Next Stop Target to "path_ball_trap_02". | :12. Create a <code>path_track</code> entity and name it "path_ball_trap_01", set <code>Next Stop Target</code> to "path_ball_trap_02". | ||
:13. Place "path_ball_trap_01" in front of and slightly above the "ball_trap" model. | :13. Place "path_ball_trap_01" in front of and slightly above the "ball_trap" model. | ||
:14. Create a <code>path_track</code> entity and name it "path_ball_trap_02, set Next Stop Target to "path_ball_trap_01". | :14. Create a <code>path_track</code> entity and name it "path_ball_trap_02, set <code>Next Stop Target</code> to "path_ball_trap_01". | ||
:15. Place "path_ball_trap_02" behind and slightly above the "ball_trap" model. | :15. Place "path_ball_trap_02" behind and slightly above the "ball_trap" model. | ||
:16. Create a brush with the nodraw texture. | :16. Create a brush with the nodraw texture. | ||
:17. Turn this brush into a <code>func_tracktrain</code> entity and name it "ball_trap_door". | :17. Turn this brush into a <code>func_tracktrain</code> entity and name it "ball_trap_door". | ||
:18. Place | :18. Place it slightly above the two <code>path_track</code> entities and behind the "path_ball_trap_01". | ||
:19. Open up the property window for "ball_trap_door" and set these keyvalues: | :19. Open up the property window for "ball_trap_door" and set these keyvalues: | ||
::{| | ::{| | ||
Line 99: | Line 99: | ||
| [[Image:Io11.png]] || OnPass || ball_trap_door || SetSpeed || 0 || 0.00 || No | | [[Image:Io11.png]] || OnPass || ball_trap_door || SetSpeed || 0 || 0.00 || No | ||
|} | |} | ||
:21. Create a <code>point_spotlight</code> entity (Shift + E) and name it "ball_trap_spotlight" You may also want to disable the | :21. Create a <code>point_spotlight</code> entity (<code>Shift+E</code>) and name it "ball_trap_spotlight". You may also want to disable the <code>Dynamic Light</code> flag. | ||
:22. Set the | :22. Set the <code>Color</code> for "ball_trap_spotlight" to "255 0 0", the <code>Beam Length</code> is normally the length of the room, and <code>Beam Width</code> somewhere between 20 and 40. | ||
:23. Create an <code>ambient_generic</code> entity and | :23. Create an <code>ambient_generic</code> entity and <code>Name</code> it "ball_trap_sound" | ||
:24. Set the Sound Name key for "ball_trap_sound" to "AlyxEMP.Charge" | :24. Set the <code>Sound Name</code> key for "ball_trap_sound" to "AlyxEMP.Charge" | ||
:25. Open the property window for "trigger_ball_trap" and set these outputs: | :25. Open the property window for "trigger_ball_trap" and set these outputs: | ||
::{| | ::{| | ||
Line 129: | Line 129: | ||
The Aperture Science High Energy Pellet Target is now complete. | The Aperture Science High Energy Pellet Target is now complete. | ||
{{note|The "ball_trap_door" sounds are drowned out by the "ball_trap_sound", you may want to adjust the delay for the <code>PlaySound</code>}} | {{note|The "ball_trap_door" sounds are drowned out by the "ball_trap_sound", you may want to adjust the delay for the <code>PlaySound</code>.}} | ||
== The theory == | == The theory == | ||
[[Image:launcher-catcher03.jpg|right|thumb|Energy Pellet Launcher and Target at work]] | [[Image:launcher-catcher03.jpg|right|thumb|Energy Pellet Launcher and Target at work.]] | ||
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.{{clr}} | 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.{{clr}} |
Revision as of 15:24, 2 December 2007
Introduction
The purpose of this tutorial is to illustrate how to create a single ball launcher and have a single ball catcher as its target. Both, the launcher and the catcher instructions will detail how the basic animations as well as the visual and sound effects work.
The Aperture Science High Energy Pellet Launcher
The launcher is comprised of three entities:
The model used is:
models/props/combine_ball_launcher.mdl
To create the launcher:
- 1. Create a
prop_dynamic
entity (Shift+E
) with aWorld Model
set to "models/props/combine_ball_launcher.mdl
" and theName
key of "ball_launcher". - 2. Place the new entity where you want it in your map.
- 3. Create a
point_energy_ball_launcher
entity and set its name to "ball". - 4. Place the new entity inside the dome of the "ball_launcher" model.
- 5. Create a new brush 20 units or so square and 1 unit thick with the nodraw texture.
- 6. Turn this brush into a
func_brush
entity (Ctrl+T
) and name it "ball_launcher_shield". - 7. Place the "ball_launcher_shield" so that it is touching the black circular shield of the "ball_launcher model".
- 8. Open up the
point_energy_ball_launcher
properties and set these outputs:
- 9. Adjust the keyvalues of
point_energy_ball_launcher
to set the desiredDirection
,Speed
,Type
, andLife
of the ball.
The Aperture Science High Energy Pellet Launcher is now complete.

point_energy_ball_launcher
outside of the "ball_launcher" model and remove the "ball_launcher_shield" outputs.The Aperture Science High Energy Pellet Target
The target is comprised of eleven entities:
- ambient_generic
- env_sprite
- filter_combineball_type
- func_tracktrain
- logic_relay
- path_track (2)
- 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_dynamic
entity with aWorld Model
key pointing to "models/props/combine_ball_catcher.mdl
" and theName
set to "ball_trap". - 2. Place the entity where you want it in your map.

- 3. Create a
filter_combineball_type
entity and name it "filter_ball". - 4. Set the ball type for "filter_ball" to "Launched by
point_combine_ball_launcher
". - 5. Create a brush with the trigger texture to cover the opening of the "ball_trap" model.
- 6. Turn this brush into a
trigger_multiple
entity and name it "trigger_ball_trap", also set thefilter_name
to "filter_ball". - 7. Create a
prop_dynamic
entity with aWorld Model
of "models/Effects/combineball.mdl
", set itsParent
to "ball_trap" andName
it "ball_trap_ball". - 8. Create a
env_sprite
entity, set itsSprite Name
to "sprites/physring1.vmt
", set itsParent
to "ball_trap" andName
it "ball_trap_sprite". - 9. Place both "ball_trap_ball" and "ball_trap_sprite" somewhere near the front of the "ball_trap" model.
- 10. Create a
logic_relay
entity and name it "relay_ball_trap_spawn". - 11. Open up the
logic_relay
properties and set these outputs:
- 12. Create a
path_track
entity and name it "path_ball_trap_01", setNext Stop Target
to "path_ball_trap_02". - 13. Place "path_ball_trap_01" in front of and slightly above the "ball_trap" model.
- 14. Create a
path_track
entity and name it "path_ball_trap_02, setNext Stop Target
to "path_ball_trap_01". - 15. Place "path_ball_trap_02" behind and slightly above the "ball_trap" model.
- 16. Create a brush with the nodraw texture.
- 17. Turn this brush into a
func_tracktrain
entity and name it "ball_trap_door". - 18. Place it slightly above the two
path_track
entities and behind the "path_ball_trap_01". - 19. Open up the property window for "ball_trap_door" and set these keyvalues:
Property Name Value First Stop Target path_ball_trap_01 Move Sound d3_citadel.podarm_move Start Sound d3_citadel.podarm_move_start Stop Sound d3_citadel.podarm_move_stop
- 20. Open up the property window for "path_ball_trap_02" and set this output:
- 21. Create a
point_spotlight
entity (Shift+E
) and name it "ball_trap_spotlight". You may also want to disable theDynamic Light
flag. - 22. Set the
Color
for "ball_trap_spotlight" to "255 0 0", theBeam Length
is normally the length of the room, andBeam Width
somewhere between 20 and 40. - 23. Create an
ambient_generic
entity andName
it "ball_trap_sound" - 24. Set the
Sound Name
key for "ball_trap_sound" to "AlyxEMP.Charge" - 25. 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.

PlaySound
.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.