Hoy profundizaremos en Kismet de UDK y echaremos un vistazo al desarrollo de Eventos, qué son, cómo podemos crearlos y cómo podemos gestionarlos. Aprenderá cómo crear y administrar casi todos los tipos de eventos en UDK para poder construir niveles completos, complejos y completamente guionados, comenzando con el nivel simple que crearemos en este tutorial..
En UDK, un evento es una situación particular que definas (obviamente en Unreal Kismet) que trae consecuencias al juego oa otros elementos del juego. Puede crear eventos en cualquier lugar en un nivel, sin limitaciones. Puede dividirlos en tres grupos diferentes: eventos precompilados, eventos de activación o eventos de InterpActor. En este tutorial los cubriremos todos para darle una vista completa de cómo se crea y manipula un evento.
Eventos precompilados: si abre Unreal Kismet (la K verde en la parte superior de la ventana de UDK, cerca del icono del navegador de contenido y el icono de Matinee) y hace clic con el botón derecho en un espacio en blanco de la ventana de Kismet, y aparece debajo "Nuevo evento", verá muchos eventos listos para usar agrupados como "Actor", "AI" o "Peón", por ejemplo. Actor, AI y Pawn son, en este caso, la parte desencadenante de un evento y sin ellos, el evento no se inicia en absoluto. Entonces, un ejemplo: si quieres que un evento comience cuando muera un enemigo, tendrás que pasar por debajo de "Peón", porque un enemigo se llama peón y elige Muerte..
Para nuestro propósito, crear una 512 x 512 x 256 Cubo hueco.
Ahora, agregue un punto de luz en la habitación sosteniendo la L Tecla en el teclado, y luego haga clic izquierdo en la sala que acabamos de crear (el Cubo).
Mueva la luz al centro de la habitación y luego reconstruya la iluminación (con o sin Lightmass, no es importante).
¿Hecho? Ahora, podemos comenzar con nuestro primer evento UDK, un evento precompilado en este caso. El evento precompilado más común utilizado por un codificador UDK es el evento "Nivel cargado". Como puedes imaginar, este evento comienza cuando se carga el nivel. Entonces, comencemos con esto: vaya a Unreal Kismet, haga clic derecho en un espacio en blanco y vaya a Nuevo evento> Nivel cargado.
Ahora, debería tener un nodo llamado "Nivel cargado" en su Kismet. Si es así, ahora puede ver que este nodo tiene tres salidas o, mejor en este caso, tres condiciones para activar el evento: cuando el nivel está cargado y visible, al inicio del nivel o cuando hay un nivel de reinicio. Estas condiciones se explican por sí mismas, de hecho, la única diferencia entre "Cargado y visible" y "Principio de nivel" es un pequeño retraso del segundo en comparación con el primero. Mientras que el tercero se trata de una recarga del nivel, pero no vamos a entrar en esta función ahora.
Vamos a crear una especie de alarma que le dice al jugador que se prepare porque el enemigo está llegando. Para lograr esto, vamos a crear otro Nodo yendo (siempre con el botón derecho), para Nueva acción> Voz / Anuncios> Anuncio de juego.
Ahora, haga clic en este Nodo, y en la barra de Texto de Anuncios, escriba "¡Prepárese! ¡Un robot viene para matarlo!" Con esto, le estamos diciendo a UDK que escriba un texto en el centro del monitor que informa al jugador que un robot lo está matando, por lo que debe prepararse para luchar..
Ahora, cree otros 6 Nodos de Anuncio de Juego, como lo hemos hecho antes.
En el último, escribe bajo el Texto de anuncio "¡Toma el fusil de choque y la pelea comenzará!".
En los otros Nodos, usaremos una cuenta regresiva de sonido que se incluye en los activos UDK. Por lo tanto, vaya al "Navegador de contenido" y escriba en la barra de búsqueda "cuenta atrás". Aparecerá una Diez ondas de Soundnode, luego seleccione "Cuenta atrás 5".
Ahora, vuelva a Kismet y haga clic en el primer Nodo de Anuncio de Juego vacío. Vaya a la barra de sonido de anuncios y haga clic en la flecha verde a la derecha. El nombre de SoundNode Wave debería aparecer en la barra. Lo que acaba de hacer es decirle a UDK que reproduzca el sonido un número (cinco) de veces para crear una cuenta atrás..
Entonces, haga lo que acaba de hacer con el Nodo anterior, con los cuatro Nodos de Anuncio de Juego restantes. Recordando que primero debe seleccionar el número para la cuenta regresiva en el Navegador de contenido (el cuarto, el tercero, el segundo y el primero) y luego hacer clic en el nodo en Kismet, y luego en el sonido de anuncio, hacer clic en la flecha verde para insertarlo.
¿Hecho? Bien. Ahora es el momento de conectar el evento a los nodos que hemos creado. Conecte la salida de "Principio de nivel" al primer nodo de anuncio.
Luego, desde la salida de su primer nodo de anuncio hasta la entrada del segundo nodo de anuncio y así sucesivamente (como se muestra a continuación).
Ahora, cuando comienza el nivel, tenemos una serie de anuncios que avisan al jugador, pero si los dejamos como están, solo se mostrará un anuncio en la pantalla y el jugador no obtendrá toda la información que queremos darle. . Para mostrarlos todos, debemos establecer un retraso entre nuestros Nodos de Anuncio. Entonces, haga clic con el botón derecho en la Salida (el rectángulo negro) del primer Nodo de Anuncio, y haga clic en "Establecer retraso de activación". En la ventana que aparece, establezca la demora en 2.0 y haga clic en Aceptar.
Repita el paso anterior para las conexiones entre los otros nodos, pero esta vez establezca la demora en 1.0, porque hay la cuenta regresiva!
Eventos de activación: Estos son eventos particulares que se usan para activar parte de un elemento, que no se muestra durante el juego, llamado "Activación". Los disparadores son cilindros, pero no son cilindros apropiados. Tienen un radio y una altura, pero no son un pincel o algo a lo que se pueda aplicar un material. El radio y la altura de estos cilindros describen el área en la que un jugador, un peón o cualquier cosa que desees, puede activar el evento relativo. Entonces, en este caso, los jugadores o los peones no son directamente responsables del inicio de un evento, sino que lo activan a través del contacto con el área definida del cilindro del Gatillo..
¿Recuerdas que escribiste en el último anuncio "Take the Shock Rifle?"? Bueno, supongo que es hora de poner uno en tu nivel. Pero primero, coloquemos un Desencadenador, que nos ayudará a definir el área en la que el jugador activará el próximo evento, y donde generaremos nuestro Lanzacohetes. Entonces, haz clic derecho en el piso, ve a "Agregar actor" y selecciona "Agregar activador". Ahora, notará que ha aparecido un ícono extraño, lo que parece ser un interruptor, con un rectángulo rojo que rodea a un cilindro verde..
Ahora, como dije antes, el cilindro es el área que define si hay contacto con el jugador o no, y activa un evento. Vamos a hacerlo más grande. Haga clic con el botón derecho en el gatillo, vaya a "Propiedades" y en "Componente del cilindro", modifique el radio y la altura del cilindro como desee (iré por un 60-60.)
Probablemente, como con el mío, el cilindro de tu Trigger cayó al suelo. Así que deslízalo hacia arriba y cuando hayas terminado, vuelve a Kismet.
En un espacio en blanco cerca del último Anuncio, haga clic con el botón derecho y vaya a Nueva Acción> Actor y seleccione "Actor Factory".
Haga clic en este nodo, y en la barra de Fábrica, haga clic en la flecha azul a la izquierda y seleccione "UTFactoryPickup". Luego haga clic en "Fábrica" para expandirla y, en la barra de inventario, seleccione "Rifle de descarga".
Luego, seleccione el Disparador en el nivel y regrese a Kismet, haga clic derecho en la entrada "SpawnPoint" y haga clic en "Nueva var. De objeto usando el disparador".
Ahora, conecte la salida del último nodo de anuncio a la entrada del nodo de fábrica del actor. Bueno, finalmente tenemos nuestro Rifle de Choque que se genera después del último anuncio..
Ahora, tenemos que engendrar un enemigo después de que el jugador haya tomado el Rifle de Choque. Para hacer esto, crearemos un evento de activación. Con el Disparador seleccionado en el nivel, ve a Kismet y haz clic derecho en un espacio en blanco, luego en "Nuevo evento usando disparador", selecciona "Tocar". Esto significa que el evento se activará cuando el jugador entre en el área del cilindro. Otra opción común es "Usado", significa que cuando el jugador está frente al cilindro y presiona la tecla E puede activar un evento. Las otras son elecciones menores, que no se usan frecuentemente con un Disparador.
Ahora, cree otro nodo "ActorFactory", pero esta vez en la barra de Fábrica, seleccione "UTActorAI". Y en las propiedades de fábrica, establezca ControllerClass: "UTBot", PawnClass: "UTPawn" y verifique la propiedad "GiveDefaultInventory".
Luego, déle un nombre (le dejaré la decisión) y conecte el evento "Trigger Touch" a "Actor Factory". Ahora, haga clic con el botón derecho en el resultado "Generado" y seleccione "Crear nueva var. De objeto".
En su nivel, en el lado opuesto de su activador, haga clic con el botón derecho en el piso, vaya a "Agregar actor" y seleccione "Agregar Pathnode".
Ahora, vuelva a Kismet, haga clic con el botón derecho en "Punto de generación" y seleccione Nueva var. De objeto usando Pathnode. Finalmente, has creado tu primer Evento de Disparo y tienes a tu enemigo desovando después de que el jugador haya tomado el arma, lo único que queda es darle al enemigo un objetivo..
En Kismet, haga clic derecho y vaya a Nueva Acción> Misc y seleccione "Traza".
Conecte la salida "finalizada" de ActorFactory a la entrada de "Seguimiento", luego conecte la entrada de inicio de "Seguimiento" a la variable de objeto de "Generada" de ActorFactory.
Ahora, haga clic derecho en un espacio en blanco, y vaya a Nueva Acción> AI y seleccione "Comenzar a disparar a".
Luego, haga clic derecho en un espacio en blanco, vaya a Nueva Acción> AI y esta vez selecciona "Stop Firing".
Conecte la salida "No obstruida" a "Comenzar a disparar" y "Obstruida" a "Dejar de disparar".
Conecte la salida de "Inicio" y "Detener activación" a la entrada de "Seguimiento" (como se muestra.)
Establecer su retraso de salida a .5.
Conecte la entrada de destino de "Inicio" y "Detener el disparo" a la variable de objeto generada.
Ahora, haga clic derecho en un espacio en blanco y vaya a Nueva Variable> Jugador, y selecciona "Jugador".
Conecta la entrada "Fire At" a la variable del jugador. De repente, has creado un bot (un enemigo) que aparece en el cilindro de disparo y luego busca al jugador. Y si está obstruido por algo, no dispara, mientras que si no está obstruido, puede disparar libremente al jugador..
Ahora, si intentas tu nivel, verás que a veces el enemigo aparece antes del final de la cuenta regresiva. Esto sucede porque el Disparador ya está habilitado y no espera el final de la secuencia de Kismet anterior. Para activar esto solo cuando finalice la cuenta regresiva, vamos a Kismet, seleccionamos "Trigger Event Touch" y deseleccionamos "Habilitado" en sus propiedades.
Luego haga clic derecho (como siempre en Kismet), y vaya a Nueva acción> Alternar y elige "Alternar".
Ahora conecte la salida del último nodo de anuncio de reproducción a la entrada "Activar" del nodo de alternancia y la salida del "Evento" de "Alternar" al "Evento de activación de activación". Ahora tienes un Evento de activación que está habilitado cuando la secuencia de Play Announcement ha finalizado.
Eventos InterpActor, StaticMeshActor y Brush: son similares a los desencadenantes, de hecho, estos eventos siempre se activan al entrar en contacto con un área, pero en este caso no con un área cilíndrica, sino con un área personalizada relacionada con el InterpActor o pincel) elegido. El único gran cambio, aparte de las diferentes áreas con las que puedes entrar en contacto, es que el Disparador está visible durante el juego, y puedes hacer contacto físico con él mientras juegas.
Finalmente, hemos llegado a los eventos InterpActor. Para este tipo de evento, crearemos una especie de división entre el nivel y la dividiremos en dos partes, ¡pero de una manera singular! Por lo tanto, vaya al "Navegador de contenido" y busque "thinwire", cuando finalice la búsqueda, haga doble clic en "Thinwire16" y haga clic con el botón derecho en su nivel y seleccione "Agregar InterpActor".
Ahora, busque "conector" y seleccione el primer resultado de su búsqueda, agregue este InterpActor dos veces.
Ajuste estos tres elementos como se muestra en la imagen a continuación, para dividir la habitación en dos partes. (Para este propósito, escale el alambre delgado en Y por 1.2)
Con estos elementos aún seleccionados, presione F4 para abrir las propiedades.
Ahora, vaya a "Colisión" y configure el "Tipo de colisión" a "Tocar todo".
Lo que acaba de hacer es poner tres InterpActor en el nivel con un Tipo de colisión configurado en Tocar todo. Lo que significa que, en este caso, se activará un evento si el Jugador u otra persona toca los cables o los conectores. Ahora, debemos crear este evento! Seleccione los tres actores que hemos creado, vaya a Kismet, haga clic con el botón derecho en un espacio en blanco, y vaya a "¿Nuevo evento usando InterpActor?", Y seleccione "Tocar".
Haga clic derecho en Kismet, vaya a Nueva Acción> Actor y seleccione "Modificar Salud".
Seleccione el nodo "Modificar estado de salud" y establezca la Cantidad de daño en 100 (vida del jugador) también puede configurar el Tipo de daño como Aplastado o Telefragmentado si desea que se reproduzca un sonido cuando el Jugador recibe el daño..
Ahora, haga clic derecho en Kismet, vaya a Nueva Variable> Jugador y selecciona "Jugador".
Conecte la entrada "Objetivo" de "Modificar salud" a esta variable.
Conecte todas las salidas "tocadas" de los eventos de InterpActor al nodo "Modificar estado de salud". Ahora, cuando alguien toca los cables o los conectores, el jugador morirá. No es tan igual, pero en este nivel el enemigo no se mueve, solo se para frente a ti y te dispara, por lo que no puede tocar los cables. Mientras que el jugador debe tener cuidado cuando él mismo se mueve..
Todavía hay un problema que arreglar, si mueres al tocar los cables o los conectores y reaparece, al tocar el InterpActor que acaba de matarte, no volverás a matarte. Eso es porque nuestros eventos están configurados para activarse solo una vez. Para solucionarlo, vaya a Kismet, seleccione todos los nodos de eventos de InterpActor y vaya a "Eventos de secuencia".
Estas propiedades son las mismas en el nodo de inicio de cada evento: "Max Trigger Count" significa cuántas veces se puede activar el evento. "Demora de activación" significa cuánto tiempo dura una activación antes de la siguiente. "Habilitado" obviamente significa que si está marcado, el evento está activado, de lo contrario está inactivo. La "Prioridad" es útil cuando tiene muchos eventos que comienzan en el mismo momento y, finalmente, "Solo para jugadores o clientes" significa quién puede activar este evento. Para nuestro propósito, establezca el "Número máximo de disparos" en 0 (infinito).
Finalmente, el nivel está completo, entonces, guarda, reconstruye tu nivel de iluminación y caminos y estás listo para probar el nivel!
Ahora haga clic con el botón derecho, vaya a "Nueva condición" y seleccione "Está vivo".
Conecte la salida terminada a la entrada "Is Alive" y conecte la salida "True" a "Trace", y "Start Fire At" y la opción "Stop Fire" a la entrada "Is Alive's". También conecte el jugador "Is Alive" al objeto "engendrado". Ahora, finalmente ha solucionado el error (¡solo inténtelo!) Y está listo para jugar su nivel!