Portal - Tutorial - Energy Ball Launcher and Catcher

From Valve Developer Community
Revision as of 23:33, 11 June 2022 by Mandrew (talk | contribs)
Jump to navigation Jump to search
English (en)Русский (ru)Translate (Translate)
Portal Level Creation

Introduction

This page will show you how to create Energy Ball Launchers and Catchers.

Launcher

Launcher Base

Concrete Slab

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

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

Launcher Light Entity

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

Launcher Clip Brush

Create a 32w*64l*64h brush with the playerclip texture. Position this brush in front of the Launcher Base.

Launcher noportal

Launcher noportal volume

Create a 8w*96l*96h brush with the invisible texture.

Launcher Collision

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

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
Note.pngNote: The 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
Io21.png OnPostSpawnBall ball_spawner_prop ball_spawner_prop close 0.00 No

Ball Catcher

Target assembly.

The target is comprised of eleven entities:

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 a World Model key pointing to "models/props/combine_ball_catcher.mdl" and the Name set to "ball_trap". Disable the shadows.
2. Place the entity where you want it in your map.
Note.pngNote: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 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 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_multiple entity and name it "trigger_ball_trap", also set the filter_name to "filter_ball". Make sure to have the flags Physics Objects selected.
7. Create a prop_dynamic entity with a World Model of "models/Effects/combineball.mdl", set its Parent to "ball_trap" and Name it "ball_trap_ball". Also make sure to have Start Disabled set to "Yes".
8. Create a env_sprite entity, set its Sprite Name to "sprites/physring1.vmt", set its Parent to "ball_trap" and Name it "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_relay entity and name it "relay_ball_trap_spawn".
11. Open up the logic_relay properties and set these outputs:
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnSpawn ball_trap_ball SetParentAttachment ball_attachment 0.00 No
Io11.png OnSpawn ball_trap_sprite SetParentAttachment ball_attachment 0.00 No
12. Create a point_spotlight entity (Shift+E) and name it "ball_trap_spotlight". You may also want to disable the Dynamic Light flag.
13. Set the Color for "ball_trap_spotlight" to "218 76 26", the Beam Length is normally the length of the room, and Beam Width somewhere between 20 and 40.
14. Create an ambient_generic entity and Name it "ball_trap_sound"
15. Set the Sound Name key 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:
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch trigger_ball_trap Disable <none> 0.00 No
Io11.png OnStartTouch ball Disable <none> 0.00 No
Io11.png OnStartTouch !activator Kill <none> 0.00 No
Io11.png OnStartTouch ball_trap_ball Enable <none> 0.00 No
Io11.png OnStartTouch ball_trap_sprite ToggleSprite <none> 0.00 No
Io11.png OnStartTouch ball_trap SetAnimation close 0.00 No
Io11.png OnStartTouch ball_trap_spotlight LightOff <none> 0.00 No
Io11.png OnStartTouch ball_trap_sound PlaySound <none> 0.00 No
Then under the Flags tab un-check "clients" and check everything else.

The Aperture Science High Energy Pellet Target is now complete.

The theory

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.

See also

External links

  • Example map Example map using this tutorial. VMF included.