Pages - Menu

martes, 22 de octubre de 2013

Tutorial Portal 2: Trituradora

Otro de los nuevos elementos peligrosos que se han introducido en Portal 2 han sido las trituradoras, cuyo único fin es eliminarnos y hacer que comencemos de nuevo. En este tutorial vamos a ver cómo crear trituradoras.


Trituradoras.

Las trituradoras son un elemento letal que para su creación requiere de bastantes pasos, no obstante su resultado es tan inmejorable como letal.

Para crear una trituradora seguimos los siguientes pasos:

- Creamos una entidad de la clase prop_dynamic.
- Editamos sus propiedades y rellenamos lo siguiente:

World Model: models/anim_wp/cursher/crusher.mdl
Name: crusher1
Collision: Not Solid
Hold animation?: Yes

- Creamos un muro con las dimensiones 128x64x192 alrededor del nuevo modelo.
- La transformamos en una entidad con Control+T y le asignamos la clase func_brush.
- Editamos sus propiedades y rellenamos lo siguiente:

Name: crusher1_brush
Parent: crusher1

- Creamos un muro alrededor del anterior con las dimensiones 200x112x192.
- La transformamos en una entidad con Control+T y le asignamos la clase trigger_hurt.
- Editamos sus propiedades y rellenamos lo siguiente:

Name: crusher1_trigger_hurt
Parent: crusher1
Damage: 1000
Damage Cap: 1000
Damage Type: CRUSH

- Creamos un muro alrededor del anterior con las dimensiones 200x96x192.
- La transformamos en entidad con Control+T y le asignamos la clase trigger_portal_cleanser .
- Editamos sus propiedades y rellenamos lo siguiente:

Name: crusher1_trigger_hurt
Parent: crusher1
Visible: No

- En la pestaña Outputs pulsamos "Add...":

My output named: OnDissolve
Target entities named: (Nombre de la entidad destino)
Via this Input: Trigger


- Creamos una entidad de la clase logic_auto.
- En la pestaña Outputs pulsamos "Add...":

My output named: OnMapSpawn
Target entities named: crusher1_brush
Via this Input: SetParentAttachmentMaintainOffset
Parameter: base_attach
Delay: 0.05
Only Once: Desmarcado

My output named: OnMapSpawn
Target entities named: crusher1_trigger_hurt
Via this Input: SetParentAttachmentMaintainOffset
Parameter: base_attach
Delay: 0.05
Only Once: Desmarcado

- Creamos una entidad de la clase logic_relay. En el parámetro "Name" ponemos "crusher1_logic_relay_crush".

- En la pestaña Outputs pulsamos "Add...":

My output named: OnTrigger
Target entities named: crusher1
Via this Input: SetAnimation
Parameter: smash_in

My output named: OnTrigger
Target entities named: crusher1_trigger_hurt
Via this Input: Enable

My output named: OnTrigger
Target entities named: crusher1_math_counter
Via this Input: SetValue
Parameter: 0


- Creamos una entidad de la clase logic_relay. En el parámetro "Name" ponemos "crusher1_logic_relay_uncrush".

- En la pestaña Outputs pulsamos "Add...":

My output named: OnTrigger
Target entities named: crusher1
Via this Input: SetAnimation
Parameter: smash_out

My output named: OnTrigger
Target entities named: crusher1_trigger_hurt
Via this Input: Disable

My output named: OnTrigger
Target entities named: crusher1_math_counter
Via this Input: SetValue
Parameter: 1

- Creamos una entidad de la clase logic_compare.
- Editamos sus propiedades y rellenamos lo siguiente:

Name: crusher1_logic_compare
Initial Value: 0
Compare Value: 1

- En la pestaña Outputs pulsamos "Add...":

My output named: OnLessThan
Target entities named: crusher1_logic_relay_crush
Via this Input: CancelPending

My output named: OnLessThan
Target entities named: crusher1_logic_relay_crush
Via this Input: Disable

- Creamos una entidad de la clase math_counter.
- Editamos sus propiedades y rellenamos lo siguiente:

Name: crusher1_math_counter
Maximum Legal Value: 1

- En la pestaña Outputs pulsamos "Add...":

My output named: OutValue
Target entities named: crusher1_logic_compare
Via this Input: SetValue


Con esto tendríamos lista la mecánica de la trituradora, ahora como buena práctica vamos a crear una entidad que se encargará de lanzar todos los anteriores. Así evitamos programaciones engorrosas una vez incorporemos varias trituradoras a un mapa.

- Creamos una entidad de la clase  func_instance_io_proxy.
- En su atributo "Name" ponemos "crusher1_proxy_crush".
- En la pestaña Outputs pulsamos "Add...":

My output named: OnProxyRelay
Target entities named: crusher1_logic_relay_crush
Via this Input: Trigger

My output named: OnProxyRelay
Target entities named: crusher1_logic_relay_uncrush
Via this Input: Trigger

My output named: OnProxyRelay
Target entities named: crusher1_logic_compare
Via this Input: Compare

Con esto hemos terminado de crear esta entidad. Con esto damos por finalizada la creación de la trituradora. Para incorporarla a un escenario tan sólo es necesario que creemos un elemento que actúe de disparador y dispare los eventos de la entidad crusher1_proxy_crush.

Hay multitud de formas de crear una trituradora, a continuación os dejo un video con otro método de creación:


¿Qué clase de mapas para Portal 2 crearías usando trituradoras?