{"id":716,"date":"2026-01-19T21:38:41","date_gmt":"2026-01-19T21:38:41","guid":{"rendered":"https:\/\/salvador.mata.com.mx\/blog\/?p=716"},"modified":"2026-03-24T20:26:40","modified_gmt":"2026-03-24T20:26:40","slug":"efecto-flash-bang-range-tutorial","status":"publish","type":"post","link":"https:\/\/salvador.mata.com.mx\/blog\/2026\/01\/19\/efecto-flash-bang-range-tutorial\/","title":{"rendered":"Efecto &#8220;flash bang&#8221; &#8211; RanGE Tutorial"},"content":{"rendered":"<h2 data-section-id=\"1mkpvbt\" data-start=\"88\" data-end=\"106\">\ud83e\udde9 Introducci\u00f3n<\/h2>\n<p data-start=\"108\" data-end=\"422\">En el desarrollo de entornos interactivos, los efectos visuales juegan un papel fundamental para comunicar estados, eventos y retroalimentaci\u00f3n al usuario. M\u00e1s all\u00e1 de su uso est\u00e9tico, estos elementos permiten mejorar la comprensi\u00f3n de lo que ocurre dentro de una escena y enriquecen la experiencia de interacci\u00f3n.<\/p>\n<p data-start=\"424\" data-end=\"805\">En este tutorial, trabajaremos en la creaci\u00f3n de un efecto visual dentro de <span style=\"color: #008000;\"><strong><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Range Engine<\/span><\/span><\/strong><\/span>, aplicando conceptos b\u00e1sicos de l\u00f3gica, temporizaci\u00f3n y control de eventos. A trav\u00e9s de este ejercicio, podr\u00e1s comprender c\u00f3mo generar respuestas visuales din\u00e1micas que pueden utilizarse en distintos contextos, como simulaciones, interfaces interactivas o prototipos.<\/p>\n<p data-start=\"807\" data-end=\"945\">No es necesario contar con experiencia avanzada previa, ya que el enfoque est\u00e1 orientado a la experimentaci\u00f3n y al aprendizaje progresivo.<\/p>\n<hr data-start=\"947\" data-end=\"950\" \/>\n<h2 data-section-id=\"3slp3u\" data-start=\"952\" data-end=\"977\">\ud83e\udde0 Enfoque del recurso<\/h2>\n<p data-start=\"979\" data-end=\"1154\">Aunque el ejercicio utiliza un efecto visual com\u00fanmente asociado a videojuegos de tipo primera persona, su prop\u00f3sito en este recurso es <span style=\"color: #ff9900;\"><strong data-start=\"1115\" data-end=\"1153\">exclusivamente t\u00e9cnico y formativo<\/strong><\/span>.<\/p>\n<p data-start=\"1156\" data-end=\"1392\">El objetivo es comprender c\u00f3mo implementar efectos visuales en tiempo real dentro de <span style=\"color: #008000;\"><strong><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Range Engine<\/span><\/span><\/strong><\/span>, as\u00ed como explorar la <span style=\"color: #008000;\"><em>manipulaci\u00f3n de eventos<\/em><\/span>, <span style=\"color: #008000;\"><em>temporizaci\u00f3n<\/em> <\/span>y<span style=\"color: #008000;\"><em> retroalimentaci\u00f3n visual<\/em><\/span> en entornos interactivos.<\/p>\n<p data-start=\"1394\" data-end=\"1655\">Este tipo de efectos no se limita a contextos de combate, sino que tambi\u00e9n puede aplicarse en simulaciones, experiencias educativas, interfaces interactivas o prototipos visuales, donde se requiere representar cambios de estado o captar la atenci\u00f3n del usuario.<\/p>\n<p data-start=\"1657\" data-end=\"1810\">Por lo tanto, el contenido est\u00e1 orientado al <span style=\"color: #008000;\"><strong data-start=\"1702\" data-end=\"1758\">aprendizaje de herramientas y t\u00e9cnicas de desarrollo<\/strong><\/span>, y no a la representaci\u00f3n o promoci\u00f3n de violencia.<\/p>\n<hr data-start=\"1812\" data-end=\"1815\" \/>\n<h2 data-section-id=\"1vx2qvl\" data-start=\"1817\" data-end=\"1844\">\ud83c\udfaf Objetivo del tutorial<\/h2>\n<p data-start=\"1846\" data-end=\"2053\">El objetivo de este tutorial es ense\u00f1arte a crear un efecto visual de alta intensidad dentro de <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\" style=\"color: #008000;\"><span class=\"whitespace-normal\">Range Engine<\/span><\/span>, simulando una transici\u00f3n luminosa que impacta la percepci\u00f3n del usuario.<\/p>\n<p data-start=\"2055\" data-end=\"2364\">A lo largo del proceso, aprender\u00e1s a combinar elementos visuales y l\u00f3gica para generar una reacci\u00f3n cre\u00edble, controlando aspectos como la intensidad, duraci\u00f3n y transici\u00f3n del efecto. Esto te permitir\u00e1 entender c\u00f3mo construir efectos visuales din\u00e1micos que influyen directamente en la experiencia del usuario.<\/p>\n<p data-start=\"2366\" data-end=\"2509\">Al finalizar, podr\u00e1s implementar este tipo de efectos en tus propios proyectos, elevando el nivel de inmersi\u00f3n y calidad visual de tus escenas.<\/p>\n<hr \/>\n<h2>\ud83e\udde0 Analizando c\u00f3mo funciona una granada cegadora<\/h2>\n<p>Gracias a los videojuegos, todos tenemos una idea clara de <strong>c\u00f3mo funciona una flashbang<\/strong>, as\u00ed que tomando eso como base, podemos analizar el efecto y determinar qu\u00e9 necesitamos para replicarlo.<\/p>\n<h3>\ud83d\udd0d Requerimientos b\u00e1sicos<\/h3>\n<p>1\ufe0f\u20e3 Necesitamos <strong>lanzar un objeto<\/strong> que simule una granada \ud83d\udca3<br \/>\n2\ufe0f\u20e3 El objeto granada <strong>\u201cexplota\u201d<\/strong> y activa varias propiedades dentro del juego \ud83d\udca5<br \/>\n3\ufe0f\u20e3 Se genera un <strong>screenshot<\/strong> del momento exacto de la explosi\u00f3n.<br \/>\n\ud83d\udcf8 Este screenshot se usa para simular el efecto de encandilamiento<br \/>\n4\ufe0f\u20e3 El screenshot se aplica a un objeto plano llamado <strong><code>monitor<\/code><\/strong>, del mismo tama\u00f1o que la c\u00e1mara, y se <strong>emparenta a la c\u00e1mara<\/strong> \ud83c\udfa5<br \/>\n5\ufe0f\u20e3 El material del objeto <strong><code>monitor<\/code><\/strong> deber\u00e1 estar <strong>animado<\/strong>:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Comienza totalmente transparente<\/span><\/li>\n<li><span style=\"color: #339966;\">De forma abrupta deja de serlo (el <em>flash<\/em> \u26a1)<\/span><\/li>\n<li><span style=\"color: #339966;\">Poco a poco vuelve a hacerse transparente \ud83c\udf2b\ufe0f<\/span><\/li>\n<\/ul>\n<p>A grandes rasgos, <span style=\"color: #008000;\"><strong>as\u00ed es como podemos empezar a entender y construir este efecto<\/strong><\/span>.<br \/>\nComo casi todo en desarrollo de videojuegos, esto es <span style=\"color: #ff9900;\"><strong>prueba y error<\/strong><\/span> \ud83d\udd01: ni siquiera trabajando con bloques de l\u00f3gica te salvas de alg\u00fan <em>typo<\/em> o una mala conexi\u00f3n entre nodos \ud83d\ude05.<\/p>\n<p>As\u00ed que <span style=\"color: #99cc00;\"><strong>no te frustres si no te sale a la primera<\/strong><\/span>, es completamente normal.<\/p>\n<hr \/>\n<h2>\ud83d\ude80 Manos a la obra<\/h2>\n<p>Dicho lo anterior\u2026 \u00a1comenzamos! \ud83d\ude04<\/p>\n<p>Para agilizar el tutorial:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">\u274c No haremos un escenario completo<\/span><\/li>\n<li><span style=\"color: #339966;\">\u274c No configuraremos un personaje en primera persona<\/span><\/li>\n<li><span style=\"color: #339966;\">\u274c No utilizaremos en esta primera parte del tutorial archivos externos (<span style=\"color: #99cc00;\">screenshot<\/span>)<\/span><\/li>\n<li><span style=\"color: #339966;\">\u2705 Nos enfocaremos <span style=\"color: #99cc00;\"><strong>solo en lo funcional<\/strong><\/span><\/span><\/li>\n<\/ul>\n<p>As\u00ed que partiremos del <strong>cubo que aparece por defecto<\/strong> cuando abrimos <span style=\"color: #99cc00;\">Range Game Engine<\/span>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-724 size-full\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/FlashBangTut_start.jpg\" alt=\"\" width=\"903\" height=\"572\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/FlashBangTut_start.jpg 903w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/FlashBangTut_start-300x190.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/FlashBangTut_start-768x486.jpg 768w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\" \/><\/p>\n<p>Este cubo ser\u00e1 el objeto que <strong>simular\u00e1 la granada cegadora<\/strong>, por lo que comenzaremos creando la <strong>l\u00f3gica b\u00e1sica<\/strong> necesaria para lograr el efecto.<\/p>\n<hr \/>\n<h2>\ud83c\udfa8 Preparando el material del efecto Flash<\/h2>\n<p>La base de este efecto es <strong>un material de color blanco<\/strong>, con el <strong>canal Alpha animado<\/strong>, que nos permitir\u00e1:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Aparecer de forma abrupta \u26a1<\/span><\/li>\n<li><span style=\"color: #339966;\">Desvanecerse poco a poco \ud83c\udf2b\ufe0f<\/span><\/li>\n<\/ul>\n<p>Luego, mediante <strong>bloques de l\u00f3gica<\/strong>, controlaremos cu\u00e1ndo se reproduce esta animaci\u00f3n.<\/p>\n<hr \/>\n<h2>\ud83e\ude9c Creaci\u00f3n del material paso a paso<\/h2>\n<p>1\ufe0f\u20e3 <span style=\"color: #99cc00;\">Agrega un objeto nuevo a la escena, ser\u00e1 un objeto plano (<em>Plane<\/em>).<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Acceso r\u00e1pido: <strong>SHIFT + A \u2192 Mesh \u2192 Plane<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">O desde el men\u00fa <strong>Add<\/strong> en la vista 3D<\/span><\/li>\n<li><span style=\"color: #339966;\">N\u00f3mbralo <\/span><strong><code><span style=\"color: #339966;\">Flashbang<\/span><\/code><\/strong><\/li>\n<\/ul>\n<p>2\ufe0f\u20e3<span style=\"color: #99cc00;\"> Agr\u00e9gale un material y n\u00f3mbralo <strong><code>FlashbangMat<\/code><\/strong><\/span><\/p>\n<p><span style=\"color: #99cc00;\">3\ufe0f\u20e3 En la secci\u00f3n <span style=\"color: #008000;\"><strong>Diffuse<\/strong><\/span>, cambia el color a <span style=\"color: #008000;\"><strong>BLANCO<\/strong> <\/span>\u26aa<\/span><\/p>\n<p><span style=\"color: #99cc00;\">4\ufe0f\u20e3 En la secci\u00f3n <span style=\"color: #008000;\"><strong>Shading<\/strong><\/span>, activa el checkbox <span style=\"color: #008000;\"><strong>Shadeless<\/strong><\/span><\/span><\/p>\n<p><span style=\"color: #99cc00;\">5\ufe0f\u20e3 En <strong><span style=\"color: #008000;\">Game Settings<\/span> \u2192 <span style=\"color: #008000;\">Constant Values<\/span><\/strong>, desactiva el checkbox <span style=\"color: #008000;\"><strong>Material<\/strong><\/span><\/span><\/p>\n<p><span style=\"color: #99cc00;\">6\ufe0f\u20e3 Activa la secci\u00f3n <span style=\"color: #008000;\"><strong>Transparency<\/strong><\/span> y selecciona <span style=\"color: #008000;\"><strong>Z Transparency<\/strong><\/span><\/span><\/p>\n<p><span style=\"color: #99cc00;\">7\ufe0f\u20e3 Abre una ventana de <span style=\"color: #008000;\"><strong>Timeline<\/strong> <\/span>y ve al <strong><span style=\"color: #008000;\">frame<\/span> 0 <span style=\"color: #008000;\">(cero)<\/span><\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">En <strong>Transparency \u2192 Alpha<\/strong>, coloca el valor en <strong>0<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">Click derecho \u2192 <strong>Add Keyframe<\/strong><\/span><\/li>\n<\/ul>\n<p>8\ufe0f\u20e3 <span style=\"color: #99cc00;\">Avanza al <strong>frame 4<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Cambia el valor de <span style=\"color: #008000;\"><strong>Alpha<\/strong> <\/span>a <strong>100<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">Click derecho \u2192 <span style=\"color: #008000;\"><strong>Add Keyframe<\/strong><\/span><\/span><\/li>\n<\/ul>\n<p>9\ufe0f\u20e3 <span style=\"color: #99cc00;\">Avanza al <strong>frame 250<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Ajusta <span style=\"color: #008000;\"><strong>Alpha<\/strong> <\/span>nuevamente a <strong>0<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">Click derecho \u2192 <span style=\"color: #008000;\"><strong>Add Keyframe<\/strong><\/span><\/span><\/li>\n<\/ul>\n<p>\ud83c\udfa5Aqu\u00ed tienes un video donde puedes ver el paso a paso:<\/p>\n<p><code>\n<div class=\"wp-block-presto-player-reusable-edit\"><!--presto-player:video_id=7--><figure class=\"wp-block-video presto-block-video  presto-provider-youtube\" style=\"--plyr-color-main: var(--presto-player-highlight-color, #18b103); --presto-player-logo-width: 150px; \">\n\t<presto-player \n\t\tpreset='{&quot;id&quot;:1,&quot;name&quot;:&quot;Default&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;icon&quot;:&quot;format-video&quot;,&quot;skin&quot;:&quot;modern&quot;,&quot;play-large&quot;:true,&quot;rewind&quot;:true,&quot;play&quot;:true,&quot;fast-forward&quot;:true,&quot;progress&quot;:true,&quot;current-time&quot;:true,&quot;mute&quot;:true,&quot;volume&quot;:true,&quot;speed&quot;:false,&quot;pip&quot;:false,&quot;fullscreen&quot;:true,&quot;captions&quot;:false,&quot;reset_on_end&quot;:true,&quot;auto_hide&quot;:true,&quot;show_time_elapsed&quot;:false,&quot;captions_enabled&quot;:false,&quot;save_player_position&quot;:true,&quot;sticky_scroll&quot;:false,&quot;sticky_scroll_position&quot;:&quot;bottom right&quot;,&quot;on_video_end&quot;:&quot;select&quot;,&quot;play_video_viewport&quot;:false,&quot;hide_youtube&quot;:false,&quot;lazy_load_youtube&quot;:false,&quot;hide_logo&quot;:false,&quot;border_radius&quot;:0,&quot;caption_style&quot;:&quot;&quot;,&quot;caption_background&quot;:&quot;&quot;,&quot;is_locked&quot;:true,&quot;cta&quot;:[&quot;&quot;],&quot;watermark&quot;:[&quot;&quot;],&quot;search&quot;:[&quot;&quot;],&quot;email_collection&quot;:[&quot;&quot;],&quot;action_bar&quot;:[&quot;&quot;],&quot;created_by&quot;:1,&quot;created_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;updated_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;deleted_at&quot;:&quot;&quot;}'\n\t\tbranding='{&quot;logo&quot;:&quot;&quot;,&quot;logo_width&quot;:150,&quot;color&quot;:&quot;#18b103&quot;,&quot;player_css&quot;:&quot;&quot;}'\n\t\tchapters='[]'\n\t\toverlays='[]'\n\t\ttracks='[]'\n\t\tblock-attributes='{&quot;playsInline&quot;:true,&quot;id&quot;:7,&quot;src&quot;:&quot;https:\\\/\\\/youtu.be\\\/II4YDRikNSI&quot;,&quot;preset&quot;:1,&quot;video_id&quot;:&quot;II4YDRikNSI&quot;,&quot;visibility&quot;:&quot;public&quot;,&quot;color&quot;:&quot;#00b3ff&quot;,&quot;mutedPreview&quot;:{&quot;enabled&quot;:false,&quot;captions&quot;:false},&quot;mutedOverlay&quot;:{&quot;enabled&quot;:false,&quot;src&quot;:&quot;&quot;,&quot;width&quot;:200,&quot;focalPoint&quot;:{&quot;x&quot;:0.5,&quot;y&quot;:0.5}},&quot;mutedOverlayType&quot;:&quot;text&quot;,&quot;mutedOverlayText&quot;:&quot;Click to play&quot;,&quot;mutedOverlayImageWidth&quot;:200,&quot;chapters&quot;:[],&quot;overlays&quot;:[],&quot;tracks&quot;:[],&quot;title&quot;:&quot;https:\\\/\\\/youtu.be\\\/II4YDRikNSI&quot;}'\n\t\tanalytics=''\n\t\tautomations\t\tprovider='youtube'\n\t\t\t\tid=\"presto-player-1\"\n\t\tsrc=\"\/\/www.youtube.com\/embed\/II4YDRikNSI?iv_load_policy=3&amp;modestbranding=1&amp;playinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\"\n\t\tmedia-title=\"https:\/\/youtu.be\/II4YDRikNSI\"\n\t\tcss=\"\"\n\t\tclass=\"presto-video-id-7 presto-preset-id-1 skin-modern\"\n\t\tskin=\"modern\" \n\t\ticon-url=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/presto-player\/img\/sprite.svg\" \n\t\tpreload=\"\" \n\t\tposter=\"\"\n\t\tyoutube=\"{&quot;noCookie&quot;:false,&quot;channelId&quot;:&quot;&quot;,&quot;show_count&quot;:false}\"\n\t\tprovider-video-id=\"II4YDRikNSI\"\n\t\tvideo-id=\"7\"\n\t\t\t\tvideo-attributes='{}'\n\t\tplaysinline\t\t\t\t>\n\t\t\n    <div class=\"presto-iframe-fallback-container\">\n        <iframe style=\"width: 100%\" title=\"Youtube Video\" class=\"presto-fallback-iframe\" id=\"presto-iframe-fallback-1\" data-src=\"https:\/\/www.youtube.com\/embed\/II4YDRikNSI?iv_load_policy=3&amp;modestbranding=1&amp;playsinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\" allowfullscreen allowtransparency allow=\"autoplay\"><\/iframe>\n    <\/div>\n\n\t<\/presto-player>\n<\/figure><\/div>\n<\/code><\/p>\n<p>\ud83d\udccc Hasta aqu\u00ed, ya tenemos un <span style=\"color: #008000;\"><strong>material con el canal Alpha animado<\/strong><\/span>, pero a\u00fan no tenemos control sobre <span style=\"color: #008000;\"><strong>cu\u00e1ndo<\/strong> <\/span>se reproduce esta animaci\u00f3n\u2026 y eso es justo lo que haremos a continuaci\u00f3n.<\/p>\n<hr \/>\n<h2>\ud83e\udde9 Controlando la animaci\u00f3n con bloques de l\u00f3gica<\/h2>\n<p>Ahora activaremos la animaci\u00f3n del material <span style=\"color: #008000;\"><strong><code>FlashbangMat<\/code><\/strong><\/span> usando <span style=\"color: #008000;\"><strong>bloques de l\u00f3gica<\/strong><\/span>.<\/p>\n<h3>\ud83d\udd17 Configuraci\u00f3n de bloques<\/h3>\n<p>1\ufe0f\u20e3<span style=\"color: #99cc00;\"> Selecciona el objeto <strong><code>Flashbang<\/code><\/strong><\/span><br \/>\n<span style=\"color: #99cc00;\">2\ufe0f\u20e3 Abre el <span style=\"color: #008000;\"><strong>Editor de bloques de l\u00f3gica<\/strong><\/span><\/span><br \/>\n<span style=\"color: #99cc00;\">3\ufe0f\u20e3 Ver\u00e1s las tres secciones:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong>Sensors<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Controllers<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Actuators<\/strong><\/span><\/li>\n<\/ul>\n<p>4\ufe0f\u20e3 <span style=\"color: #99cc00;\">En <strong>Sensors<\/strong>, agrega un sensor <strong>Keyboard<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Config\u00faralo para activarse con la <strong>barra espaciadora<\/strong><\/span><\/li>\n<\/ul>\n<p>5\ufe0f\u20e3 <span style=\"color: #99cc00;\">En <span style=\"color: #008000;\"><strong>Controllers<\/strong><\/span>, agrega un controlador <span style=\"color: #008000;\"><strong>AND<\/strong><\/span><\/span><\/p>\n<p><span style=\"color: #99cc00;\">6\ufe0f\u20e3 En <span style=\"color: #008000;\"><strong>Actuators<\/strong><\/span>, agrega un actuador <span style=\"color: #008000;\"><strong>Action<\/strong><\/span><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Tipo de reproducci\u00f3n: <span style=\"color: #008000;\"><strong>Play<\/strong><\/span><\/span><\/li>\n<li><span style=\"color: #339966;\">Selecciona la acci\u00f3n correspondiente a la animaci\u00f3n del material<\/span>\n<ul>\n<li><span style=\"color: #339966;\">El nombre se genera autom\u00e1ticamente<\/span><\/li>\n<li><span style=\"color: #339966;\">Algo similar a <strong><code>FlashbangMatAction<\/code><\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">Como no hay m\u00e1s animaciones, ser\u00e1 la \u00fanica disponible<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>7\ufe0f\u20e3 <span style=\"color: #99cc00;\">Configura el rango de la animaci\u00f3n:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong>Start Frame:<\/strong> <code>0<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>End Frame:<\/strong> <\/span><code><span style=\"color: #339966;\">250<\/span><\/code><\/li>\n<\/ul>\n<p><span style=\"color: #008000;\"><strong>Aqui tienes un video con el proceso completo:<\/strong><\/span><\/p>\n\n<div class=\"wp-block-presto-player-reusable-edit\"><!--presto-player:video_id=6--><figure class=\"wp-block-video presto-block-video  presto-provider-youtube\" style=\"--plyr-color-main: var(--presto-player-highlight-color, #18b103); --presto-player-logo-width: 150px; \">\n\t<presto-player \n\t\tpreset='{&quot;id&quot;:1,&quot;name&quot;:&quot;Default&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;icon&quot;:&quot;format-video&quot;,&quot;skin&quot;:&quot;modern&quot;,&quot;play-large&quot;:true,&quot;rewind&quot;:true,&quot;play&quot;:true,&quot;fast-forward&quot;:true,&quot;progress&quot;:true,&quot;current-time&quot;:true,&quot;mute&quot;:true,&quot;volume&quot;:true,&quot;speed&quot;:false,&quot;pip&quot;:false,&quot;fullscreen&quot;:true,&quot;captions&quot;:false,&quot;reset_on_end&quot;:true,&quot;auto_hide&quot;:true,&quot;show_time_elapsed&quot;:false,&quot;captions_enabled&quot;:false,&quot;save_player_position&quot;:true,&quot;sticky_scroll&quot;:false,&quot;sticky_scroll_position&quot;:&quot;bottom right&quot;,&quot;on_video_end&quot;:&quot;select&quot;,&quot;play_video_viewport&quot;:false,&quot;hide_youtube&quot;:false,&quot;lazy_load_youtube&quot;:false,&quot;hide_logo&quot;:false,&quot;border_radius&quot;:0,&quot;caption_style&quot;:&quot;&quot;,&quot;caption_background&quot;:&quot;&quot;,&quot;is_locked&quot;:true,&quot;cta&quot;:[&quot;&quot;],&quot;watermark&quot;:[&quot;&quot;],&quot;search&quot;:[&quot;&quot;],&quot;email_collection&quot;:[&quot;&quot;],&quot;action_bar&quot;:[&quot;&quot;],&quot;created_by&quot;:1,&quot;created_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;updated_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;deleted_at&quot;:&quot;&quot;}'\n\t\tbranding='{&quot;logo&quot;:&quot;&quot;,&quot;logo_width&quot;:150,&quot;color&quot;:&quot;#18b103&quot;,&quot;player_css&quot;:&quot;&quot;}'\n\t\tchapters='[]'\n\t\toverlays='[]'\n\t\ttracks='[]'\n\t\tblock-attributes='{&quot;playsInline&quot;:true,&quot;id&quot;:6,&quot;src&quot;:&quot;https:\\\/\\\/youtu.be\\\/c2LgTExf05g&quot;,&quot;preset&quot;:1,&quot;video_id&quot;:&quot;c2LgTExf05g&quot;,&quot;visibility&quot;:&quot;public&quot;,&quot;color&quot;:&quot;#00b3ff&quot;,&quot;mutedPreview&quot;:{&quot;enabled&quot;:false,&quot;captions&quot;:false},&quot;mutedOverlay&quot;:{&quot;enabled&quot;:false,&quot;src&quot;:&quot;&quot;,&quot;width&quot;:200,&quot;focalPoint&quot;:{&quot;x&quot;:0.5,&quot;y&quot;:0.5}},&quot;mutedOverlayType&quot;:&quot;text&quot;,&quot;mutedOverlayText&quot;:&quot;Click to play&quot;,&quot;mutedOverlayImageWidth&quot;:200,&quot;chapters&quot;:[],&quot;overlays&quot;:[],&quot;tracks&quot;:[],&quot;title&quot;:&quot;https:\\\/\\\/youtu.be\\\/c2LgTExf05g&quot;}'\n\t\tanalytics=''\n\t\tautomations\t\tprovider='youtube'\n\t\t\t\tid=\"presto-player-2\"\n\t\tsrc=\"\/\/www.youtube.com\/embed\/c2LgTExf05g?iv_load_policy=3&amp;modestbranding=1&amp;playinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\"\n\t\tmedia-title=\"https:\/\/youtu.be\/c2LgTExf05g\"\n\t\tcss=\"\"\n\t\tclass=\"presto-video-id-6 presto-preset-id-1 skin-modern\"\n\t\tskin=\"modern\" \n\t\ticon-url=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/presto-player\/img\/sprite.svg\" \n\t\tpreload=\"\" \n\t\tposter=\"\"\n\t\tyoutube=\"{&quot;noCookie&quot;:false,&quot;channelId&quot;:&quot;&quot;,&quot;show_count&quot;:false}\"\n\t\tprovider-video-id=\"c2LgTExf05g\"\n\t\tvideo-id=\"6\"\n\t\t\t\tvideo-attributes='{}'\n\t\tplaysinline\t\t\t\t>\n\t\t\n    <div class=\"presto-iframe-fallback-container\">\n        <iframe style=\"width: 100%\" title=\"Youtube Video\" class=\"presto-fallback-iframe\" id=\"presto-iframe-fallback-2\" data-src=\"https:\/\/www.youtube.com\/embed\/c2LgTExf05g?iv_load_policy=3&amp;modestbranding=1&amp;playsinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\" allowfullscreen allowtransparency allow=\"autoplay\"><\/iframe>\n    <\/div>\n\n\t<\/presto-player>\n<\/figure><\/div>\n\n<hr \/>\n<h2>\u25b6\ufe0f Probando el efecto<\/h2>\n<p>Coloca el cursor sobre la vista 3D y:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Presiona <span style=\"color: #008000;\"><strong>P<\/strong><\/span>, o<\/span><\/li>\n<li><span style=\"color: #339966;\">Usa el bot\u00f3n <span style=\"color: #008000;\"><strong>PLAY<\/strong> <\/span>en la barra de la vista 3D<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-735\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/RangeEngine_f0Mk1UkMa0.gif\" alt=\"\" width=\"525\" height=\"363\" \/><\/p>\n<p>Como puedes ver, <strong>el efecto ya funciona correctamente<\/strong> \ud83c\udf89.<\/p>\n<hr \/>\n<h2 data-start=\"200\" data-end=\"249\">\ud83c\udfa5 Ajustando el objeto <em data-start=\"226\" data-end=\"237\">Flashbang<\/em> a la c\u00e1mara<\/h2>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-742\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/RangeEngine_PnUk4Pm5qU.gif\" alt=\"\" width=\"647\" height=\"290\" \/><\/p>\n<p data-start=\"251\" data-end=\"470\">El objeto <strong data-start=\"261\" data-end=\"276\"><code data-start=\"263\" data-end=\"274\">Flashbang<\/code><\/strong> debe estar colocado<span style=\"color: #008000;\"> <strong data-start=\"297\" data-end=\"325\">justo frente a la c\u00e1mara<\/strong><\/span>, por razones bastante obvias \ud83d\ude04:<br data-start=\"358\" data-end=\"361\" \/>el efecto debe <span style=\"color: #008000;\"><strong data-start=\"376\" data-end=\"426\">superponerse a todos los objetos del escenario<\/strong><\/span>, sin importar qu\u00e9 haya delante del jugador.<\/p>\n<p data-start=\"472\" data-end=\"647\">Adem\u00e1s, es importante <span style=\"color: #008000;\"><strong data-start=\"494\" data-end=\"526\">dejar una distancia adecuada<\/strong><\/span> entre la c\u00e1mara y el objeto <code data-start=\"555\" data-end=\"566\">Flashbang<\/code>.<br data-start=\"567\" data-end=\"570\" \/>Esto evita que, al acercarnos demasiado a otros objetos del escenario, estos:<\/p>\n<ul data-start=\"648\" data-end=\"739\">\n<li data-start=\"648\" data-end=\"688\">\n<p data-start=\"650\" data-end=\"688\"><span style=\"color: #339966;\">Se encimen con el plano del flash \u26a0\ufe0f<\/span><\/p>\n<\/li>\n<li data-start=\"689\" data-end=\"739\">\n<p data-start=\"691\" data-end=\"739\"><span style=\"color: #339966;\">Generen errores visuales o artefactos raros \ud83d\udc7b<\/span><\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"741\" data-end=\"744\" \/>\n<h3 data-start=\"746\" data-end=\"780\">\ud83d\udcd0 Consideraciones importantes<\/h3>\n<p data-start=\"782\" data-end=\"990\">Este proceso <span style=\"color: #008000;\"><strong data-start=\"795\" data-end=\"837\">no tiene una receta exacta paso a paso<\/strong><\/span> y tampoco hay una \u00fanica forma correcta de hacerlo.<br data-start=\"888\" data-end=\"891\" \/>Puedes ajustarlo <strong data-start=\"908\" data-end=\"934\">c<span style=\"color: #008000;\">omo mejor te funcione<\/span><\/strong>, siempre y cuando se cumplan estas condiciones b\u00e1sicas:<\/p>\n<p data-start=\"992\" data-end=\"1248\">\u2705<span style=\"color: #339966;\"> El objeto <strong data-start=\"1004\" data-end=\"1019\"><code data-start=\"1006\" data-end=\"1017\">Flashbang<\/code><\/strong> debe quedar <span style=\"color: #008000;\"><strong data-start=\"1032\" data-end=\"1062\">siempre frente a la c\u00e1mara<\/strong><\/span><\/span><br data-start=\"1062\" data-end=\"1065\" \/><span style=\"color: #339966;\">\u2705 Debe tener un <span style=\"color: #008000;\"><strong data-start=\"1081\" data-end=\"1129\">tama\u00f1o aproximado a la apertura de la c\u00e1mara<\/strong><\/span><\/span><br data-start=\"1129\" data-end=\"1132\" \/><span style=\"color: #339966;\">\u2705 No debe interferir con <span style=\"color: #008000;\">otros objetos<\/span> del escenario<\/span><br data-start=\"1184\" data-end=\"1187\" \/><span style=\"color: #339966;\">\u2705 El efecto <span style=\"color: #008000;\">debe cubrir<\/span> toda la pantalla cuando se active \u26a1<\/span><\/p>\n<p data-start=\"992\" data-end=\"1248\"><code>\n<div class=\"wp-block-presto-player-reusable-edit\"><!--presto-player:video_id=8--><figure class=\"wp-block-video presto-block-video  presto-provider-youtube\" style=\"--plyr-color-main: var(--presto-player-highlight-color, #18b103); --presto-player-logo-width: 150px; \">\n\t<presto-player \n\t\tpreset='{&quot;id&quot;:1,&quot;name&quot;:&quot;Default&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;icon&quot;:&quot;format-video&quot;,&quot;skin&quot;:&quot;modern&quot;,&quot;play-large&quot;:true,&quot;rewind&quot;:true,&quot;play&quot;:true,&quot;fast-forward&quot;:true,&quot;progress&quot;:true,&quot;current-time&quot;:true,&quot;mute&quot;:true,&quot;volume&quot;:true,&quot;speed&quot;:false,&quot;pip&quot;:false,&quot;fullscreen&quot;:true,&quot;captions&quot;:false,&quot;reset_on_end&quot;:true,&quot;auto_hide&quot;:true,&quot;show_time_elapsed&quot;:false,&quot;captions_enabled&quot;:false,&quot;save_player_position&quot;:true,&quot;sticky_scroll&quot;:false,&quot;sticky_scroll_position&quot;:&quot;bottom right&quot;,&quot;on_video_end&quot;:&quot;select&quot;,&quot;play_video_viewport&quot;:false,&quot;hide_youtube&quot;:false,&quot;lazy_load_youtube&quot;:false,&quot;hide_logo&quot;:false,&quot;border_radius&quot;:0,&quot;caption_style&quot;:&quot;&quot;,&quot;caption_background&quot;:&quot;&quot;,&quot;is_locked&quot;:true,&quot;cta&quot;:[&quot;&quot;],&quot;watermark&quot;:[&quot;&quot;],&quot;search&quot;:[&quot;&quot;],&quot;email_collection&quot;:[&quot;&quot;],&quot;action_bar&quot;:[&quot;&quot;],&quot;created_by&quot;:1,&quot;created_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;updated_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;deleted_at&quot;:&quot;&quot;}'\n\t\tbranding='{&quot;logo&quot;:&quot;&quot;,&quot;logo_width&quot;:150,&quot;color&quot;:&quot;#18b103&quot;,&quot;player_css&quot;:&quot;&quot;}'\n\t\tchapters='[]'\n\t\toverlays='[]'\n\t\ttracks='[]'\n\t\tblock-attributes='{&quot;playsInline&quot;:true,&quot;id&quot;:8,&quot;src&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/watch?v=jntizZSKGlI&quot;,&quot;preset&quot;:1,&quot;video_id&quot;:&quot;jntizZSKGlI&quot;,&quot;visibility&quot;:&quot;public&quot;,&quot;color&quot;:&quot;#00b3ff&quot;,&quot;mutedPreview&quot;:{&quot;enabled&quot;:false,&quot;captions&quot;:false},&quot;mutedOverlay&quot;:{&quot;enabled&quot;:false,&quot;src&quot;:&quot;&quot;,&quot;width&quot;:200,&quot;focalPoint&quot;:{&quot;x&quot;:0.5,&quot;y&quot;:0.5}},&quot;mutedOverlayType&quot;:&quot;text&quot;,&quot;mutedOverlayText&quot;:&quot;Click to play&quot;,&quot;mutedOverlayImageWidth&quot;:200,&quot;chapters&quot;:[],&quot;overlays&quot;:[],&quot;tracks&quot;:[],&quot;title&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/watch?v=jntizZSKGlI&quot;}'\n\t\tanalytics=''\n\t\tautomations\t\tprovider='youtube'\n\t\t\t\tid=\"presto-player-3\"\n\t\tsrc=\"\/\/www.youtube.com\/embed\/jntizZSKGlI?iv_load_policy=3&amp;modestbranding=1&amp;playinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\"\n\t\tmedia-title=\"https:\/\/www.youtube.com\/watch?v=jntizZSKGlI\"\n\t\tcss=\"\"\n\t\tclass=\"presto-video-id-8 presto-preset-id-1 skin-modern\"\n\t\tskin=\"modern\" \n\t\ticon-url=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/presto-player\/img\/sprite.svg\" \n\t\tpreload=\"\" \n\t\tposter=\"\"\n\t\tyoutube=\"{&quot;noCookie&quot;:false,&quot;channelId&quot;:&quot;&quot;,&quot;show_count&quot;:false}\"\n\t\tprovider-video-id=\"jntizZSKGlI\"\n\t\tvideo-id=\"8\"\n\t\t\t\tvideo-attributes='{}'\n\t\tplaysinline\t\t\t\t>\n\t\t\n    <div class=\"presto-iframe-fallback-container\">\n        <iframe style=\"width: 100%\" title=\"Youtube Video\" class=\"presto-fallback-iframe\" id=\"presto-iframe-fallback-3\" data-src=\"https:\/\/www.youtube.com\/embed\/jntizZSKGlI?iv_load_policy=3&amp;modestbranding=1&amp;playsinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\" allowfullscreen allowtransparency allow=\"autoplay\"><\/iframe>\n    <\/div>\n\n\t<\/presto-player>\n<\/figure><\/div>\n<\/code><\/p>\n<hr data-start=\"1250\" data-end=\"1253\" \/>\n<p data-start=\"1255\" data-end=\"1303\">\ud83d\udccc En resumen:<br data-start=\"1269\" data-end=\"1272\" \/>Mientras el objeto <code data-start=\"1291\" data-end=\"1302\">Flashbang<\/code>:<\/p>\n<ul data-start=\"1304\" data-end=\"1425\">\n<li data-start=\"1304\" data-end=\"1338\">\n<p data-start=\"1306\" data-end=\"1338\"><span style=\"color: #339966;\">Est\u00e9 alineado con la c\u00e1mara \ud83c\udfa5<\/span><\/p>\n<\/li>\n<li data-start=\"1339\" data-end=\"1383\">\n<p data-start=\"1341\" data-end=\"1383\"><span style=\"color: #339966;\">Cubra completamente la vista del jugador<\/span><\/p>\n<\/li>\n<li data-start=\"1384\" data-end=\"1425\">\n<p data-start=\"1386\" data-end=\"1425\"><span style=\"color: #339966;\">Y no genere problemas de intersecci\u00f3n<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1427\" data-end=\"1463\">\u2026el efecto funcionar\u00e1 correctamente.<\/p>\n<hr \/>\n<h2>\ud83e\udde0 Detalles importantes a tomar en cuenta<\/h2>\n<h3>\ud83d\udd27 \u00bfPor qu\u00e9 desactivamos \u201c<span style=\"color: #008000;\">Material<\/span>\u201d en <span style=\"color: #008000;\">Constant Values<\/span>?<\/h3>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-737\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/RangeEngine_I5UWkZkVRd.gif\" alt=\"\" width=\"338\" height=\"299\" \/><\/p>\n<p>La secci\u00f3n <span style=\"color: #008000;\"><strong>Constant Values<\/strong><\/span> sirve para indicarle al motor qu\u00e9 valores <strong>no cambiar\u00e1n<\/strong> durante el juego, lo cual ayuda a optimizar rendimiento.<\/p>\n<p>Si <span style=\"color: #008000;\"><strong>no hubi\u00e9ramos desactivado la opci\u00f3n \u201cMaterial\u201d<\/strong><\/span>, le estar\u00edamos diciendo al motor que:<\/p>\n<blockquote><p><em>Las propiedades del material son constantes y no cambiar\u00e1n<\/em><\/p><\/blockquote>\n<p>Esto har\u00eda que:<\/p>\n<ul>\n<li>\u274c<span style=\"color: #339966;\"> La animaci\u00f3n del canal Alpha fuera ignorada<\/span><\/li>\n<li><span style=\"color: #339966;\">\u274c El efecto no funcionara al ejecutar el motor<\/span><\/li>\n<\/ul>\n<p>As\u00ed que <span style=\"color: #008000;\"><strong>t\u00f3malo en cuenta para futuros desarrollos<\/strong><\/span> \ud83d\udc40.<\/p>\n<hr \/>\n<h3>\ud83c\udff7\ufe0f Sobre los nombres de las <em>Actions<\/em><\/h3>\n<p>Cuando se crea una <span style=\"color: #008000;\"><strong>Action<\/strong> <\/span>(ya sea de objetos o materiales), el nombre se asigna de forma autom\u00e1tica.<br \/>\nSin embargo, <span style=\"color: #008000;\"><strong>puedes cambiarlo<\/strong><\/span> desde el <span style=\"color: #008000;\"><strong>Outliner<\/strong><\/span>:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Busca el objeto<\/span><\/li>\n<li><span style=\"color: #339966;\">Ve a sus propiedades<\/span><\/li>\n<li><span style=\"color: #339966;\">Haz doble click sobre el nombre de la acci\u00f3n<\/span><\/li>\n<li><span style=\"color: #339966;\">As\u00edgnale uno m\u00e1s descriptivo si lo deseas \u270f\ufe0f<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-738\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/RangeEngine_QuKLmh3EkU.gif\" alt=\"\" width=\"273\" height=\"337\" \/><\/p>\n<p>\u270f\ufe0fY no te preocupes por el cambio de nombre, ya que este se actualiza autom\u00e1ticamente en donde lo hayas usado.. por ejemplo en los bloques de l\u00f3gica.<\/p>\n<hr \/>\n<p>En el siguiente paso ya podremos:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Integrar este efecto con la granada<\/span><\/li>\n<li><span style=\"color: #339966;\">Y comenzar a construir el efecto completo de <span style=\"color: #008000;\"><strong><em>flashbang<\/em> <\/strong><\/span>\ud83d\udca5\ud83c\udfae<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><strong>Continuamos \ud83d\ude80\ud83d\ude04<\/strong><\/p>\n<hr \/>\n<h2 style=\"text-align: center;\">\ud83d\udca3 El objeto &#8220;<em>Grenade&#8221;<\/em><\/h2>\n<p>El siguiente paso es hacer que la <span style=\"color: #008000;\"><strong>granada<\/strong> <\/span>sea la encargada de <span style=\"color: #008000;\"><strong>activar el efecto <em>flashbang<\/em><\/strong><\/span>, simulando el momento en el que una granada cegadora detona dentro del juego \ud83d\udca5\ud83d\udca1.<\/p>\n<p>Para esto utilizaremos el objeto <strong>Cube<\/strong> que ya se encuentra en la escena (el cubo de color rojo).<br \/>\nA este objeto le haremos algunos cambios b\u00e1sicos antes de entrar en la l\u00f3gica.<\/p>\n<hr \/>\n<h2>\ud83d\udee0\ufe0f Preparando el objeto granada<\/h2>\n<p>1\ufe0f\u20e3<span style=\"color: #339966;\"> Renombra el objeto <strong><code>Cube<\/code><\/strong> a <strong><code>grenade<\/code><\/strong><\/span><br \/>\n<span style=\"color: #339966;\">2\ufe0f\u20e3 Agr\u00e9gale una <strong>propiedad <\/strong>tipo &#8220;timer&#8221; y n\u00f3mbrala <\/span><strong><code><span style=\"color: #339966;\">grenade<\/span><\/code><\/strong><\/p>\n<p>Con esto ya tenemos el objeto que representar\u00e1 a nuestra granada dentro del juego.<\/p>\n<hr \/>\n<h2>\ud83e\udde9 L\u00f3gica de activaci\u00f3n de la granada<\/h2>\n<p>Ahora vamos al <strong>panel de bloques de l\u00f3gica<\/strong> para configurar el comportamiento de la granada.<\/p>\n<h3>\ud83d\udd17 Sensores<\/h3>\n<ul>\n<li><span style=\"color: #339966;\">Agrega un sensor de tipo &#8220;<strong>Property&#8221; <\/strong>y renombralo <strong>&#8220;contador&#8221; y presiona el boton &#8220;Invert&#8221;<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">En <strong>Evaluation Type<\/strong>, selecciona <strong>Interval<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">En <strong>Property<\/strong>, selecciona el nombre de la propiedad que hicimos anteriormente:<\/span>\n<pre><code>grenade<\/code><\/pre>\n<\/li>\n<li><span style=\"color: #339966;\">En los valores del rango establece:<\/span>\n<ul>\n<li><span style=\"color: #008000;\"><strong>Min:<\/strong> <code>0<\/code><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong>Max:<\/strong> <code>3.5<\/code><\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\ud83d\udccc Este sensor se activar\u00e1 cuando la propiedad <code>grenade<\/code> NO se encuentre dentro de ese rango, por eso usamos el boton &#8220;invert&#8221;.<\/p>\n<hr \/>\n<h3>\u2699\ufe0f Controlador<\/h3>\n<ul>\n<li>Conecta el sensor a un controlador <strong>AND<\/strong>, y conecta este controlador a los siguientes Actuadores.<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83d\udce9 Actuadores<\/h3>\n<h4>\u2709\ufe0f Actuador Message<\/h4>\n<ul>\n<li><span style=\"color: #339966;\">Tipo: <strong>Message<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">En <strong>To<\/strong>, selecciona el objeto <\/span><strong><code><span style=\"color: #339966;\">flashbang<\/span><\/code><\/strong><br \/>\n<blockquote><p>Esto indica que el mensaje ser\u00e1 enviado directamente a ese objeto<\/p><\/blockquote>\n<\/li>\n<li><span style=\"color: #339966;\">En <strong>Subject<\/strong>, escribe el mensaje que se enviar\u00e1:<\/span>\n<pre><code>activar flashbang\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h4>\u274c Actuador Edit Object<\/h4>\n<ul>\n<li><span style=\"color: #339966;\">Agrega un actuador <strong>Edit Object<\/strong><\/span><\/li>\n<li><span style=\"color: #339966;\">Selecciona el tipo <strong>End Object<\/strong><\/span><\/li>\n<\/ul>\n<p>\ud83d\udccc Con esto logramos que, una vez activada la granada:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Se env\u00ede el mensaje para disparar el efecto<\/span><\/li>\n<li><span style=\"color: #339966;\">La granada desaparezca de la escena \ud83d\udca3\ud83d\udca8<\/span><\/li>\n<\/ul>\n<hr \/>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/ChZWR9ATnL.png\" \/><\/p>\n<p>Como puedes ver, <strong>el setup de bloques de l\u00f3gica es bastante sencillo<\/strong>, pero cumple perfectamente su funci\u00f3n.<\/p>\n<hr \/>\n<h2>\u26a0\ufe0f \u00bfPor qu\u00e9 a\u00fan no se activa el efecto <em>Flashbang<\/em>?<\/h2>\n<p>Hasta este punto, <span style=\"color: #008000;\"><strong>todo funciona correctamente<\/strong><\/span>, excepto el efecto visual del <em>flashbang<\/em>.<br \/>\nEsto ocurre porque, aunque ya estamos enviando un mensaje al objeto <strong><code>flashbang<\/code><\/strong>, <span style=\"color: #008000;\"><strong>ese objeto a\u00fan no est\u00e1 preparado para recibirlo<\/strong><\/span>.<\/p>\n<p>As\u00ed que ahora toca configurar el receptor del mensaje \ud83d\udc47<\/p>\n<hr \/>\n<h2>\ud83d\udce5 Preparando el objeto <em>Flashbang<\/em> para recibir el mensaje<\/h2>\n<p>Selecciona el objeto <strong><code>flashbang<\/code><\/strong>.<br \/>\nPuedes hacerlo de dos formas:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Directamente desde la <span style=\"color: #008000;\"><strong>vista 3D<\/strong><\/span><\/span><br \/>\n<span style=\"color: #339966;\"><em>(recuerda que est\u00e1 emparentado a la c\u00e1mara)<\/em> \ud83c\udfa5<\/span><\/li>\n<li><span style=\"color: #339966;\">O desde el <span style=\"color: #008000;\"><strong>Outliner<\/strong><\/span>, lo cual suele ser m\u00e1s pr\u00e1ctico<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/seleccionar_outliner.gif\" \/><\/p>\n<hr \/>\n<h2>\ud83e\udde0 Ajustando los sensores del objeto <em>Flashbang<\/em><\/h2>\n<p>El proceso es muy simple:<\/p>\n<p>1\ufe0f\u20e3 Desactiva el sensor <strong>Keyboard<\/strong><\/p>\n<ul>\n<li>Basta con apagar el <strong>checkbox verde<\/strong> \ud83d\udfe2\u274c<\/li>\n<\/ul>\n<p>2\ufe0f\u20e3 Agrega un nuevo sensor de tipo <strong>Message<\/strong><\/p>\n<p>3\ufe0f\u20e3 En el campo <strong>Subject<\/strong>, escribe:<\/p>\n<pre><code>activar flashbang\r\n<\/code><\/pre>\n<p>\ud83d\udccc De esta forma, el efecto:<\/p>\n<ul>\n<li>\u274c Ya no se activa con una tecla<\/li>\n<li>\u2705 Se activa \u00fanicamente cuando el objeto <code>flashbang<\/code> recibe el mensaje enviado por la granada<\/li>\n<\/ul>\n<p>Aqu\u00ed puedes ver el proceso completo del setup de bloques de l\u00f3gica para esta parte del ejercicio.<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/setupLB_cropped.gif\" \/><\/p>\n<hr \/>\n<h2>\u25b6\ufe0f Probando el setup<\/h2>\n<p>Ahora solo queda <strong>probar que todo funcione correctamente<\/strong>.<br \/>\nEjecuta el juego y observa el <strong>Debug Info<\/strong> en Range para verificar que:<\/p>\n<ul>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">El mensaje<\/span> se env\u00eda correctamente \ud83d\udce9<\/span><\/li>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">El objeto<\/span> <code>flashbang<\/code> lo recibe<\/span><\/li>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">La animaci\u00f3n<\/span> del efecto se ejecuta \u26a1<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/test_flashbang.gif\" \/><\/p>\n<p>Si tuviste algun problema concluyendo este ejercicio de forma satisfactoria, aqu\u00ed te dejo un enlace de descarga con el archivo de ejemplo ya terminado para que lo estudies y puedas recrearlo mas f\u00e1cilmente.<\/p>\n<hr \/>\n<p>Con esto ya tenemos:<\/p>\n<ul>\n<li><span style=\"color: #339966;\">Una granada que <span style=\"color: #008000;\"><strong>detona<\/strong> <\/span>\ud83d\udca3<\/span><\/li>\n<li><span style=\"color: #339966;\">Un mensaje que <span style=\"color: #008000;\"><strong>dispara el efecto visual<\/strong> <\/span>\ud83d\udca1<\/span><\/li>\n<li><span style=\"color: #339966;\">Y un sistema <span style=\"color: #008000;\">desacoplado y limpio<\/span>, muy al estilo Range \ud83e\udde9\ud83c\udfae<\/span><\/li>\n<\/ul>\n<hr \/>\n<h2 data-start=\"192\" data-end=\"227\">\ud83d\ude80 Mejoras al efecto <em data-start=\"216\" data-end=\"227\">Flashbang<\/em><\/h2>\n<p data-start=\"229\" data-end=\"531\">En este punto ya tenemos el efecto funcionando, as\u00ed que ahora podemos <span style=\"color: #008000;\"><strong data-start=\"299\" data-end=\"328\">pulir tiempos, distancias<\/strong><\/span> e incluso<span style=\"color: #008000;\"> <strong data-start=\"339\" data-end=\"371\">integrarlo mejor al gameplay<\/strong><\/span> \ud83d\ude80.<br data-start=\"375\" data-end=\"378\" \/>Adem\u00e1s, vale la pena decirlo:<span style=\"color: #008000;\"> <strong data-start=\"408\" data-end=\"446\">este sigue siendo un efecto b\u00e1sico<\/strong><\/span>, y como todo en desarrollo de videojuegos, <span style=\"color: #008000;\"><strong data-start=\"490\" data-end=\"527\">siempre hay margen para mejorarlo<\/strong> <\/span>\ud83d\ude04.<\/p>\n<hr data-start=\"533\" data-end=\"536\" \/>\n<h2 data-start=\"538\" data-end=\"583\">\ud83e\udde0 Agregando l\u00f3gica m\u00e1s realista al efecto<\/h2>\n<p data-start=\"585\" data-end=\"782\">Una de las primeras mejoras que podemos implementar es <strong data-start=\"640\" data-end=\"710\">validar ciertos aspectos del comportamiento de la granada cegadora<\/strong>, para que el efecto se sienta m\u00e1s natural y coherente dentro del juego.<\/p>\n<p data-start=\"784\" data-end=\"836\">Uno de los puntos m\u00e1s importantes es el siguiente \ud83d\udc47<\/p>\n<p data-start=\"838\" data-end=\"875\">\ud83d\udca1<span style=\"color: #99cc00;\"> <strong data-start=\"841\" data-end=\"875\">L\u00ednea de vista y obstrucciones<\/strong><\/span><\/p>\n<ul data-start=\"877\" data-end=\"1191\">\n<li data-start=\"877\" data-end=\"1014\">\n<p data-start=\"879\" data-end=\"1014\"><span style=\"color: #339966;\">Si el jugador <span style=\"color: #008000;\"><strong data-start=\"893\" data-end=\"923\">tiene la granada de frente<\/strong><\/span>, o est\u00e1 dentro de su <span style=\"color: #008000;\"><strong data-start=\"945\" data-end=\"964\">l\u00ednea de visi\u00f3n<\/strong><\/span>, el destello debe <span style=\"color: #008000;\"><strong data-start=\"983\" data-end=\"1010\">cegarlo moment\u00e1neamente<\/strong><\/span> \u26a1<\/span><\/p>\n<\/li>\n<li data-start=\"1015\" data-end=\"1191\">\n<p data-start=\"1017\" data-end=\"1191\"><span style=\"color: #339966;\">Pero si la granada<span style=\"color: #008000;\"> <strong data-start=\"1036\" data-end=\"1064\">est\u00e1 detr\u00e1s de una pared<\/strong><\/span>, un objeto s\u00f3lido o cualquier elemento que bloquee la vista \ud83d\udc41\ufe0f\ud83e\uddf1<\/span><br data-start=\"1130\" data-end=\"1133\" \/><span style=\"color: #339966;\">\ud83d\udc49 entonces <span style=\"color: #008000;\"><strong data-start=\"1147\" data-end=\"1191\">NO deber\u00eda activarse el efecto de cegado<\/strong><\/span><\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1193\" data-end=\"1243\"><span style=\"color: #99cc00;\">Esto no solo mejora el realismo, sino que tambi\u00e9n:<\/span><\/p>\n<ul data-start=\"1244\" data-end=\"1380\">\n<li data-start=\"1244\" data-end=\"1277\">\n<p data-start=\"1246\" data-end=\"1277\"><span style=\"color: #339966;\"><span style=\"color: #008000;\">Hace<\/span> el gameplay m\u00e1s justo \ud83c\udfaf<\/span><\/p>\n<\/li>\n<li data-start=\"1278\" data-end=\"1321\">\n<p data-start=\"1280\" data-end=\"1321\"><span style=\"color: #339966;\"><span style=\"color: #008000;\">Evita<\/span> efectos visuales \u201cinjustificados\u201d<\/span><\/p>\n<\/li>\n<li data-start=\"1322\" data-end=\"1380\">\n<p data-start=\"1324\" data-end=\"1380\"><span style=\"color: #339966;\">Le da mayor credibilidad al comportamiento de la granada<\/span><\/p>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\ud83c\udfa5 Permitiendo que la c\u00e1mara gire (l\u00ednea de vista)<\/h2>\n<p>Antes de poder validar si el jugador <span style=\"color: #008000;\"><strong>est\u00e1 viendo o no la granada<\/strong><\/span>, necesitamos algo fundamental:<br \/>\nque la <span style=\"color: #008000;\"><strong>c\u00e1mara pueda girar libremente<\/strong><\/span>, tanto de izquierda a derecha como de arriba hacia abajo \ud83d\udc40\ud83c\udfae.<\/p>\n<p>Esto nos permitir\u00e1 <span style=\"color: #008000;\"><strong>cambiar la l\u00ednea de vista<\/strong><\/span> del jugador y, a partir de ah\u00ed, realizar las validaciones que mencionamos anteriormente.<\/p>\n<hr \/>\n<h2>\ud83e\udde9 Configurando el giro de la c\u00e1mara<\/h2>\n<p>Este paso es <span style=\"color: #008000;\"><strong>muy sencillo<\/strong><\/span> y no requiere l\u00f3gica compleja.<br \/>\nLa idea es detectar el movimiento del mouse y usarlo para <span style=\"color: #008000;\"><strong>ajustar la rotaci\u00f3n de la c\u00e1mara<\/strong><\/span>, simulando el comportamiento t\u00edpico de una c\u00e1mara en primera persona.<\/p>\n<h3>\ud83d\udd17 Bloques de l\u00f3gica necesarios<\/h3>\n<p>1\ufe0f\u20e3 <span style=\"color: #99cc00;\">Agrega un sensor de tipo <span style=\"color: #008000;\"><strong>Mouse<\/strong><\/span><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Este sensor detectar\u00e1 el <strong>movimiento del cursor<\/strong><\/span><\/li>\n<\/ul>\n<p>2\ufe0f\u20e3 <span style=\"color: #99cc00;\">Conecta el sensor a un controlador <span style=\"color: #008000;\"><strong>AND<\/strong><\/span><\/span><\/p>\n<p><span style=\"color: #99cc00;\">3\ufe0f\u20e3 Agrega un <span style=\"color: #008000;\">actuador<\/span> de tipo <span style=\"color: #008000;\"><strong>Mouse<\/strong><\/span><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Este actuador interpretar\u00e1 el movimiento del mouse<\/span><\/li>\n<li><span style=\"color: #339966;\">Ajustar\u00e1 la <strong>rotaci\u00f3n de la c\u00e1mara<\/strong>:<\/span>\n<ul>\n<li><span style=\"color: #008000;\">Horizontal (izquierda \/ derecha) \u2194\ufe0f<\/span><\/li>\n<li><span style=\"color: #008000;\">Vertical (arriba \/ abajo) \u2195\ufe0f<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\ud83d\udccc<span style=\"color: #99cc00;\"> El resultado es que la c\u00e1mara:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">Gira<\/span> suavemente seg\u00fan el movimiento del mouse \ud83d\uddb1\ufe0f<\/span><\/li>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">Cambia<\/span> constantemente la l\u00ednea de vista del jugador<\/span><\/li>\n<li><span style=\"color: #339966;\">Queda lista para evaluar si el flashbang est\u00e1 o no dentro del campo visual<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/MouseLook_Validaciones.gif\" \/><\/p>\n<p>Con esto ya tenemos una c\u00e1mara funcional que nos permitir\u00e1 <strong>seguir avanzando hacia validaciones m\u00e1s interesantes<\/strong>, como determinar si el jugador realmente vio la explosi\u00f3n de la granada \ud83d\udca5\ud83d\udc41\ufe0f.<\/p>\n<p>En el siguiente paso comenzaremos a usar esta informaci\u00f3n para <strong>decidir cu\u00e1ndo aplicar (o no) el efecto <em>flashbang<\/em><\/strong> \ud83d\ude80\ud83c\udfae<\/p>\n<hr \/>\n<h2>\ud83d\udce1 Detectando la granada con un sensor <em>Radar<\/em><\/h2>\n<p>Ahora que ya podemos <span style=\"color: #008000;\"><strong>girar libremente la vista de la c\u00e1mara<\/strong><\/span> en cualquier direcci\u00f3n, es momento de dar el siguiente paso:<br \/>\n<span style=\"color: #008000;\"><strong>detectar si la granada est\u00e1 frente al jugador<\/strong><\/span> \ud83d\udc40\ud83d\udca3.<\/p>\n<p>Para lograr esto utilizaremos un sensor de tipo <span style=\"color: #008000;\"><strong>Radar<\/strong><\/span>, el cual nos permite detectar objetos <span style=\"color: #008000;\"><strong>bas\u00e1ndose en una propiedad espec\u00edfica<\/strong><\/span> que dichos objetos contengan.<br \/>\nEsto lo hace perfecto para validar si la granada est\u00e1 o no dentro de la <span style=\"color: #008000;\"><strong>l\u00ednea de visi\u00f3n<\/strong> <\/span>de la c\u00e1mara.<\/p>\n<hr \/>\n<h2>\ud83e\udde9 Configurando el sensor Radar<\/h2>\n<p>A continuaci\u00f3n vamos a armar los <span style=\"color: #008000;\"><strong>bloques de l\u00f3gica necesarios<\/strong><\/span> para que la c\u00e1mara pueda detectar la granada correctamente.<\/p>\n<h3>\ud83d\udd39 Paso 1: Sensor Radar (detecci\u00f3n positiva)<\/h3>\n<p>1\ufe0f\u20e3<span style=\"color: #339966;\"> A\u00f1ade un sensor de tipo <span style=\"color: #008000;\"><strong>Radar<\/strong> <\/span>a la <span style=\"color: #008000;\"><strong>c\u00e1mara<\/strong><\/span><\/span><br \/>\n<span style=\"color: #339966;\">2\ufe0f\u20e3 En el campo <span style=\"color: #008000;\"><strong>Property<\/strong><\/span>, escribe la propiedad que vamos a buscar:<\/span><\/p>\n<pre><span style=\"color: #008000;\"><code>granada\r\n<\/code><\/span><\/pre>\n<p><span style=\"color: #ff9900;\"><em>(Esta propiedad se encuentra en el objeto <code>grenade<\/code>)<\/em><\/span><\/p>\n<p>3\ufe0f\u20e3 Configura los par\u00e1metros del Radar:<\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong>Axis:<\/strong> <code>-Z<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Angle:<\/strong> <code>50\u00b0<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Distance:<\/strong> <code>20<\/code> unidades<\/span><\/li>\n<\/ul>\n<p>\ud83d\udccc Con esto estamos creando un \u201ccono\u201d de detecci\u00f3n frente a la c\u00e1mara.<\/p>\n<hr \/>\n<h3>\ud83d\udd39 Paso 2: Controlador<\/h3>\n<p>4\ufe0f\u20e3 A\u00f1ade un controlador <span style=\"color: #008000;\"><strong>AND<\/strong> <\/span>y conecta el sensor Radar<\/p>\n<hr \/>\n<h3>\ud83d\udd39 Paso 3: Propiedad de estado<\/h3>\n<p>5\ufe0f\u20e3 Agrega a la c\u00e1mara una propiedad de tipo <span style=\"color: #008000;\"><strong>Boolean<\/strong> <\/span>llamada:<\/p>\n<pre><span style=\"color: #339966;\"><code>grenade_vis\r\n<\/code><\/span><\/pre>\n<p>Esta propiedad nos servir\u00e1 para saber si la granada est\u00e1 o no siendo vista por la c\u00e1mara.<\/p>\n<hr \/>\n<h3>\ud83d\udd39 Paso 4: Actuador Property (granada visible)<\/h3>\n<p>6\ufe0f\u20e3 A\u00f1ade un actuador de tipo <span style=\"color: #008000;\"><strong>Property<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong>Property:<\/strong> <code>grenade_vis<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Mode:<\/strong> <code>Assign<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Value:<\/strong> <\/span><code><span style=\"color: #339966;\">TRUE<\/span><\/code><\/li>\n<\/ul>\n<p>\ud83d\udccc Esto indica que <strong>si el sensor Radar detecta la granada<\/strong>, la propiedad <code>grenade_vis<\/code> pasar\u00e1 a ser <strong>TRUE<\/strong>.<\/p>\n<hr \/>\n<h3>\ud83d\udd39 Paso 5: Sensor Radar invertido (granada NO visible)<\/h3>\n<p>7\ufe0f\u20e3 A\u00f1ade un <span style=\"color: #008000;\"><strong>segundo sensor Radar<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Usa <span style=\"color: #008000;\"><strong>exactamente los mismos valores<\/strong><\/span> que el anterior sensor Radar<\/span><\/li>\n<li><span style=\"color: #339966;\">Activa la opci\u00f3n <strong>Invert<\/strong><\/span><\/li>\n<\/ul>\n<p>8\ufe0f\u20e3 Conecta este sensor a otro actuador <span style=\"color: #008000;\"><strong>Property<\/strong> <\/span>con los siguientes valores:<\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong>Property:<\/strong> <code>grenade_vis<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Mode:<\/strong> <code>Assign<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Value:<\/strong> <\/span><code><span style=\"color: #339966;\">FALSE<\/span><\/code><\/li>\n<\/ul>\n<p>\ud83d\udccc De esta forma, cuando el Radar <span style=\"color: #008000;\"><strong>NO detecta la granada<\/strong><\/span>, la propiedad se actualiza autom\u00e1ticamente a <span style=\"color: #008000;\"><strong>FALSE<\/strong><\/span>.<\/p>\n<hr \/>\n<h3>\ud83d\udd39 Paso 6: Sensor Property de validaci\u00f3n<\/h3>\n<p>9\ufe0f\u20e3 A\u00f1ade un sensor de tipo <strong>Property<\/strong><\/p>\n<ul>\n<li><span style=\"color: #339966;\"><strong>Property:<\/strong> <code>grenade_vis<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\"><strong>Value:<\/strong> <\/span><code><span style=\"color: #339966;\">TRUE<\/span><\/code><\/li>\n<\/ul>\n<p>Este sensor nos permitir\u00e1, m\u00e1s adelante, <span style=\"color: #008000;\"><strong>disparar el efecto <em>flashbang<\/em><\/strong><\/span> \u00fanicamente cuando:<\/p>\n<ul>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">La granada<\/span> est\u00e9 dentro del campo de visi\u00f3n<\/span><\/li>\n<li><span style=\"color: #339966;\"><span style=\"color: #008000;\">Y la c\u00e1mara<\/span> realmente la est\u00e9 \u201cviendo\u201d \ud83d\udc41\ufe0f\ud83d\udca5<\/span><\/li>\n<\/ul>\n<p>El setup completo deber\u00e1 quedarte as\u00ed, y verifica lo que est\u00e1 enmarcado, son opciones que deben estar activos para que funcione correctamente:<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/radar_setup_.png\" \/><\/p>\n<hr \/>\n<h2>\u2705 Resultado<\/h2>\n<p><span style=\"color: #99cc00;\">Con este setup logramos que la c\u00e1mara:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Detecte si la granada est\u00e1 frente al jugador \ud83d\udce1<\/span><\/li>\n<li><span style=\"color: #339966;\">Mantenga un estado claro de visibilidad mediante la propiedad <code>grenade_vis<\/code><\/span><\/li>\n<li><span style=\"color: #339966;\">Nos prepare el terreno para aplicar el efecto <em>flashbang<\/em> solo cuando realmente tenga sentido visual \ud83c\udfae\u2728<\/span><\/li>\n<\/ul>\n<p>En el siguiente paso usaremos esta informaci\u00f3n para <span style=\"color: #008000;\"><strong>decidir si el efecto se activa o no<\/strong><\/span>, cerrando el ciclo completo del comportamiento de la granada cegadora \ud83d\ude80<\/p>\n<hr \/>\n<h2>\ud83e\udde0 Combinando decisiones: \u00bfse activa o no el <em>Flashbang<\/em>?<\/h2>\n<p>En este punto ya contamos con una pieza clave del sistema:<br \/>\nla variable <strong><code>grenade_vis<\/code><\/strong>, que nos indica si la granada <span style=\"color: #008000;\"><strong>est\u00e1 o no dentro de la l\u00ednea de vista de la c\u00e1mara<\/strong> <\/span>\ud83d\udc41\ufe0f\ud83d\udca3.<\/p>\n<p>Ahora simplemente vamos a<span style=\"color: #008000;\"> <strong>utilizar el resultado positivo<\/strong><\/span> de esta variable, es decir cuando:<\/p>\n<pre><span style=\"color: #ff9900;\"><code>grenade_vis = TRUE\r\n<\/code><\/span><\/pre>\n<hr \/>\n<h2>\ud83d\udd0d Aclarando un detalle importante<\/h2>\n<p>Tal vez notaste que, en el paso anterior,<span style=\"color: #ff9900;\"> <strong>queda un sensor aparentemente desconectado<\/strong><\/span>.<br \/>\nEsto no es un error \u274c.<\/p>\n<p>Ese sensor ser\u00e1 conectado <span style=\"color: #008000;\"><strong>al objeto granada<\/strong><\/span>, combin\u00e1ndose con el <span style=\"color: #008000;\"><strong>timer<\/strong> <\/span>que determina el momento exacto en el que la granada se activa \ud83d\udca5.<\/p>\n<p>De esta forma, la decisi\u00f3n de ejecutar el efecto <em>flashbang<\/em> <span style=\"color: #008000;\"><strong>no depende de una sola condici\u00f3n<\/strong><\/span>, sino de varias trabajando juntas.<\/p>\n<hr \/>\n<h2>\ud83c\udfaf L\u00f3gica de decisi\u00f3n final<\/h2>\n<p>A partir de ahora, el efecto <em>flashbang<\/em> solo se ejecutar\u00e1 si se cumplen <span style=\"color: #008000;\"><strong>ambas condiciones<\/strong><\/span>:<\/p>\n<p>\u2705 <span style=\"color: #99cc00;\">La granada <span style=\"color: #008000;\"><strong>ya est\u00e1 en el momento de activarse<\/strong><\/span><\/span><br \/>\n<span style=\"color: #99cc00;\">\u2705 La propiedad <strong><code>grenade_vis<\/code> <span style=\"color: #008000;\">es TRUE<\/span><\/strong>, es decir:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">La granada est\u00e1 frente a la c\u00e1mara<\/span><\/li>\n<li><span style=\"color: #339966;\">Est\u00e1 dentro del campo de visi\u00f3n<\/span><\/li>\n<\/ul>\n<p>Si alguna de estas condiciones <span style=\"color: #008000;\"><strong>no se cumple<\/strong><\/span>, entonces:<\/p>\n<ul>\n<li>\u274c<span style=\"color: #339966;\"><span style=\"color: #008000;\"> No<\/span> habr\u00e1 destello<\/span><\/li>\n<li><span style=\"color: #339966;\">\u274c El jugador<span style=\"color: #008000;\"> no ser\u00e1 cegado<\/span><\/span><\/li>\n<li><span style=\"color: #339966;\">\ud83c\udfae El comportamiento se sentir\u00e1 mucho m\u00e1s natural<\/span><\/li>\n<\/ul>\n<hr \/>\n<h2>\ud83e\udde9 Procedimiento paso a paso<\/h2>\n<p>1\ufe0f\u20e3<span style=\"color: #99cc00;\"> Selecciona la <strong>c\u00e1mara<\/strong><\/span><br \/>\n<span style=\"color: #99cc00;\">2\ufe0f\u20e3 Mant\u00e9n presionada la tecla <strong>Shift<\/strong> y ahora selecciona el <strong>cubo rojo (<code>grenade<\/code>)<\/strong><\/span><br \/>\n<span style=\"color: #99cc00;\"><em>(ambos objetos deben quedar seleccionados)<\/em><\/span><\/p>\n<p>3\ufe0f\u20e3 <span style=\"color: #99cc00;\">Minimiza todos los <strong>sensores, controladores y actuadores<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Esto facilita visualizar y conectar los bloques sin confusi\u00f3n \ud83d\udc40<\/span><\/li>\n<\/ul>\n<p>4\ufe0f\u20e3 <span style=\"color: #99cc00;\">Enlaza el <strong>sensor Property<\/strong> de la c\u00e1mara:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">Sensor: <strong><code>grenade TRUE<\/code><\/strong><\/span><br \/>\n<span style=\"color: #339966;\">con el <strong>controlador del objeto <code>grenade<\/code><\/strong>, donde:<\/span><\/li>\n<li><span style=\"color: #339966;\">El sensor de la granada se llama <\/span><strong><code><span style=\"color: #339966;\">contador<\/span><\/code><\/strong><\/li>\n<\/ul>\n<p>\ud83d\udccc De esta forma, el controlador del objeto <code>grenade<\/code> recibe informaci\u00f3n <strong>directamente desde la c\u00e1mara<\/strong>.<\/p>\n<hr \/>\n<h2>\ud83d\udd17 \u00bfQu\u00e9 logramos con esta combinaci\u00f3n?<\/h2>\n<p><span style=\"color: #99cc00;\">Esta combinaci\u00f3n de sensores hace que la <strong>toma de decisiones sea m\u00e1s robusta<\/strong>:<\/span><\/p>\n<ul>\n<li><span style=\"color: #339966;\">El efecto <strong>solo se activa<\/strong> cuando:<\/span>\n<ul>\n<li><span style=\"color: #008000;\">La propiedad de la granada <strong>sale del rango<\/strong> <code>0.0 \u2013 3.0<\/code><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong>Y al mismo tiempo<\/strong> <code>grenade_vis = TRUE<\/code><\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #339966;\">Si la c\u00e1mara:<\/span>\n<ul>\n<li><span style=\"color: #008000;\">Mira hacia otro lado<\/span><\/li>\n<li><span style=\"color: #008000;\">Tiene una pared u objeto bloqueando la vista<\/span><br \/>\n<span style=\"color: #008000;\">\ud83d\udc49 entonces <strong>no habr\u00e1 flash<\/strong>, aunque la granada explote<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>\ud83e\udde0 Vista general del proceso<\/h2>\n<p>A continuaci\u00f3n te muestro <strong>el flujo completo del sistema<\/strong>, para que quede m\u00e1s claro c\u00f3mo se conectan todas las decisiones entre s\u00ed:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/enlazando_bloques.gif\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2 data-start=\"224\" data-end=\"255\">\ud83d\udce1 Sobre el sensor <strong data-start=\"246\" data-end=\"255\">Radar<\/strong><\/h2>\n<p data-start=\"257\" data-end=\"549\">El sensor <span style=\"color: #008000;\"><strong data-start=\"267\" data-end=\"276\">Radar<\/strong> <\/span>tiene ciertos requisitos para poder funcionar correctamente, ya que no es posible que detecte cualquier objeto ni cualquiera de sus propiedades \u201cas\u00ed nada m\u00e1s\u201d.<br data-start=\"436\" data-end=\"439\" \/>Para que el Radar funcione, es necesario <span style=\"color: #008000;\"><strong data-start=\"480\" data-end=\"548\">especificar que el objeto que ser\u00e1 detectado sea de tipo <em data-start=\"539\" data-end=\"546\">Actor<\/em><\/strong>.<\/span><\/p>\n<h3 data-start=\"551\" data-end=\"611\">\ud83e\udd14 \u00bfC\u00f3mo determinamos que un objeto sea de tipo <em data-start=\"603\" data-end=\"610\">Actor<\/em>?<\/h3>\n<p data-start=\"613\" data-end=\"880\">Los objetos f\u00edsicos dentro del motor de juegos cuentan con muchas propiedades, y cada una de ellas cumple una funci\u00f3n distinta. En este caso espec\u00edfico, los objetos de tipo <span style=\"color: #008000;\"><strong data-start=\"786\" data-end=\"795\">Actor<\/strong> <\/span>son aquellos que <span style=\"color: #008000;\"><strong data-start=\"813\" data-end=\"879\">pueden ser detectados por un sensor Radar o por un sensor Near<\/strong><\/span>.<\/p>\n<h3 data-start=\"882\" data-end=\"931\"><span style=\"color: #99cc00;\">Por lo tanto, debe quedar muy claro lo siguiente:<\/span><\/h3>\n<p data-start=\"933\" data-end=\"1078\">\ud83d\udc49 <span style=\"color: #ff9900;\">Si estamos usando sensores <strong data-start=\"963\" data-end=\"972\">Radar<\/strong> o <strong data-start=\"975\" data-end=\"983\">Near<\/strong>, y los objetos que queremos detectar <strong data-start=\"1021\" data-end=\"1045\">no son de tipo Actor<\/strong>, la detecci\u00f3n <strong data-start=\"1060\" data-end=\"1077\">no funcionar\u00e1<\/strong>.<\/span><\/p>\n<p data-start=\"1080\" data-end=\"1330\">Lo m\u00e1s confuso es que el motor de juegos <span style=\"color: #008000;\"><strong data-start=\"1121\" data-end=\"1149\">no mostrar\u00e1 ning\u00fan error<\/strong><\/span>. Todo parecer\u00e1 estar correctamente configurado, pero el sensor no detectar\u00e1 nada, lo cual puede volverte loco moment\u00e1neamente mientras intentas descubrir por qu\u00e9 no funciona \ud83d\ude35\u200d\ud83d\udcab.<\/p>\n<h3 data-start=\"1332\" data-end=\"1349\">\u2705 Regla clave<\/h3>\n<p data-start=\"1351\" data-end=\"1434\">\ud83d\udccc <strong data-start=\"1354\" data-end=\"1434\">Si usas sensores <span style=\"color: #008000;\">Radar<\/span> o <span style=\"color: #008000;\">Near<\/span>, los objetos a buscar deben ser de tipo Actor.<\/strong><\/p>\n<h3 data-start=\"1436\" data-end=\"1498\">\u2699\ufe0f \u00bfD\u00f3nde se especifica que un objeto sea de tipo <em data-start=\"1490\" data-end=\"1497\">Actor<\/em>?<\/h3>\n<p data-start=\"1500\" data-end=\"1588\"><span style=\"color: #99cc00;\">Para indicarle al motor de juegos que un objeto es de tipo <strong data-start=\"1559\" data-end=\"1568\">Actor<\/strong>, sigue estos pasos:<\/span><\/p>\n<ol data-start=\"1590\" data-end=\"1768\">\n<li data-start=\"1590\" data-end=\"1627\">\n<p data-start=\"1593\" data-end=\"1627\"><span style=\"color: #339966;\">Selecciona el objeto en la escena.<\/span><\/p>\n<\/li>\n<li data-start=\"1628\" data-end=\"1658\">\n<p data-start=\"1631\" data-end=\"1658\"><span style=\"color: #339966;\">Ve al <span style=\"color: #008000;\"><strong data-start=\"1637\" data-end=\"1657\">panel de f\u00edsicas<\/strong><\/span>.<\/span><\/p>\n<\/li>\n<li data-start=\"1659\" data-end=\"1745\">\n<p data-start=\"1662\" data-end=\"1745\"><span style=\"color: #339966;\">Justo debajo de la secci\u00f3n <strong data-start=\"1689\" data-end=\"1707\">\u201c<span style=\"color: #008000;\">Physics Type<\/span>\u201d<\/strong>, encontrar\u00e1s el checkbox <strong data-start=\"1733\" data-end=\"1744\">\u201c<span style=\"color: #008000;\">Actor<\/span>\u201d<\/strong>.<\/span><\/p>\n<\/li>\n<li data-start=\"1746\" data-end=\"1768\">\n<p data-start=\"1749\" data-end=\"1768\"><span style=\"color: #339966;\">Act\u00edvalo \u2705 y listo.<\/span><\/p>\n<\/li>\n<\/ol>\n<p data-start=\"1770\" data-end=\"1893\">Con esto, el objeto ya podr\u00e1 ser detectado correctamente por los sensores <span style=\"color: #008000;\"><strong data-start=\"1844\" data-end=\"1853\">Radar<\/strong> y <strong data-start=\"1856\" data-end=\"1864\">Near<\/strong> en <strong data-start=\"1868\" data-end=\"1889\">Range Game Engine<\/strong><\/span> \ud83c\udfae\u2728<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/actor.jpg\" \/><\/p>\n<hr \/>\n<h2>Con esto ya tenemos un efecto <em>flashbang<\/em> que:<\/h2>\n<ul>\n<li><span style=\"color: #339966;\">Responde a la <span style=\"color: #008000;\"><strong>l\u00ednea de visi\u00f3n real del jugador<\/strong><\/span> \ud83d\udc41\ufe0f<\/span><\/li>\n<li><span style=\"color: #339966;\">Tiene decisiones l\u00f3gicas combinadas<\/span><\/li>\n<li><span style=\"color: #339966;\">Se comporta de forma mucho m\u00e1s coherente dentro del gameplay \ud83c\udfae\u2728<\/span><\/li>\n<\/ul>\n<h2 data-start=\"199\" data-end=\"228\">\ud83e\udde9 Consideraciones finales<\/h2>\n<p data-start=\"230\" data-end=\"499\">A este ejercicio <span style=\"color: #008000;\"><strong data-start=\"247\" data-end=\"289\">todav\u00eda le faltan algunas validaciones<\/strong><\/span> para que pueda considerarse completamente funcional dentro de un peque\u00f1o videojuego \ud83c\udfae.<br data-start=\"377\" data-end=\"380\" \/>Sin embargo, cumple perfectamente su objetivo como <span style=\"color: #008000;\"><strong data-start=\"431\" data-end=\"458\">ejercicio introductorio<\/strong><\/span>, ya que te da las bases necesarias para:<\/p>\n<ul data-start=\"501\" data-end=\"685\">\n<li data-start=\"501\" data-end=\"559\">\n<p data-start=\"503\" data-end=\"559\"><span style=\"color: #339966;\">Desarrollar <span style=\"color: #008000;\"><strong data-start=\"515\" data-end=\"557\">tu propia forma de implementar efectos<\/strong><\/span><\/span><\/p>\n<\/li>\n<li data-start=\"560\" data-end=\"616\">\n<p data-start=\"562\" data-end=\"616\"><span style=\"color: #339966;\">Entender c\u00f3mo combinar l\u00f3gica, materiales y sensores<\/span><\/p>\n<\/li>\n<li data-start=\"617\" data-end=\"685\">\n<p data-start=\"619\" data-end=\"685\"><span style=\"color: #339966;\">Continuar experimentando y mejorando el sistema por tu cuenta \ud83d\ude80<\/span><\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"198\" data-end=\"251\">\ud83d\udc41\ufe0f Validaci\u00f3n de l\u00ednea de vista (muy importante)<\/h3>\n<p data-start=\"253\" data-end=\"519\">Una de las validaciones m\u00e1s importantes que puedes implementar es asegurarte de que <span style=\"color: #008000;\"><strong data-start=\"337\" data-end=\"402\">si la granada no est\u00e1 dentro de la l\u00ednea de vista del jugador<\/strong><\/span>, esta <span style=\"color: #008000;\"><strong data-start=\"409\" data-end=\"425\">s\u00ed se active<\/strong><\/span>, pero <span style=\"color: #008000;\"><strong data-start=\"432\" data-end=\"484\">sin disparar el efecto visual de encandilamiento<\/strong><\/span>, y posteriormente <span style=\"color: #008000;\"><strong data-start=\"503\" data-end=\"518\">desaparezca<\/strong><\/span>.<\/p>\n<p data-start=\"521\" data-end=\"612\">Esto es clave para que el comportamiento sea correcto y coherente con el gameplay esperado.<\/p>\n<p data-start=\"614\" data-end=\"1014\">Si no haces esta validaci\u00f3n, el sistema no funcionar\u00e1 como deber\u00eda.<br data-start=\"681\" data-end=\"684\" \/>Por ejemplo, en el estado actual, la granada se activa despu\u00e9s de <strong data-start=\"750\" data-end=\"764\">3 segundos<\/strong>, incluso si no estaba en la l\u00ednea de vista. Sin embargo, el problema aparece despu\u00e9s:<br data-start=\"850\" data-end=\"853\" \/>si una vez cumplidos esos 3 segundos el jugador <strong data-start=\"901\" data-end=\"928\">voltea a ver la granada<\/strong>, el efecto de flash <strong data-start=\"949\" data-end=\"1007\">se activa aunque ya haya pasado el tiempo de explosi\u00f3n<\/strong> \ud83d\ude35\u200d\ud83d\udcab.<\/p>\n<p data-start=\"1016\" data-end=\"1061\">Eso rompe completamente la l\u00f3gica del efecto.<\/p>\n<h3 data-start=\"1063\" data-end=\"1115\">\ud83e\udde0 \u00bfC\u00f3mo validamos correctamente esta condici\u00f3n?<\/h3>\n<p data-start=\"1117\" data-end=\"1189\"><span style=\"color: #99cc00;\">La soluci\u00f3n es bastante sencilla y se basa en <strong data-start=\"1163\" data-end=\"1188\">dos condiciones clave<\/strong>:<\/span><\/p>\n<ul data-start=\"1191\" data-end=\"1380\">\n<li data-start=\"1191\" data-end=\"1281\">\n<p data-start=\"1193\" data-end=\"1281\"><span style=\"color: #339966;\">El <strong data-start=\"1196\" data-end=\"1205\">timer<\/strong> del objeto <code data-start=\"1217\" data-end=\"1226\">grenade<\/code> ya <strong data-start=\"1230\" data-end=\"1280\">no est\u00e1 dentro del rango de 0.0 a 3.0 segundos<\/strong>.<\/span><\/p>\n<\/li>\n<li data-start=\"1282\" data-end=\"1380\">\n<p data-start=\"1284\" data-end=\"1380\"><span style=\"color: #339966;\">La variable <code data-start=\"1296\" data-end=\"1309\">grenade_vis<\/code> es <strong data-start=\"1313\" data-end=\"1322\">FALSE<\/strong>, es decir, <strong data-start=\"1334\" data-end=\"1379\">la granada no estaba en la l\u00ednea de vista<\/strong>.<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1382\" data-end=\"1424\">Si ambas condiciones se cumplen, entonces:<\/p>\n<p data-start=\"1426\" data-end=\"1476\">\ud83d\udc49 <strong data-start=\"1429\" data-end=\"1476\">La granada debe desaparecer inmediatamente.<\/strong><\/p>\n<p data-start=\"1478\" data-end=\"1497\"><span style=\"color: #99cc00;\">Esto significa que:<\/span><\/p>\n<ul data-start=\"1498\" data-end=\"1656\">\n<li data-start=\"1498\" data-end=\"1538\">\n<p data-start=\"1500\" data-end=\"1538\"><span style=\"color: #339966;\">La granada <strong data-start=\"1511\" data-end=\"1527\">s\u00ed se activ\u00f3<\/strong> (explot\u00f3),<\/span><\/p>\n<\/li>\n<li data-start=\"1539\" data-end=\"1656\">\n<p data-start=\"1541\" data-end=\"1656\"><span style=\"color: #339966;\">Pero <strong data-start=\"1546\" data-end=\"1573\">no encandil\u00f3 al jugador<\/strong>, porque <strong data-start=\"1582\" data-end=\"1625\">no estaba siendo observada directamente<\/strong> en el momento de la explosi\u00f3n.<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1658\" data-end=\"1758\">Con esta validaci\u00f3n, el efecto se vuelve mucho m\u00e1s s\u00f3lido, l\u00f3gico y realista dentro del gameplay \ud83c\udfae\u2728<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/RangeEngine_oTiwQQqgFp.gif\" \/><\/p>\n<hr data-start=\"687\" data-end=\"690\" \/>\n<h2 data-start=\"692\" data-end=\"725\">\ud83d\udce6 Archivo de ejemplo avanzado<\/h2>\n<p data-start=\"727\" data-end=\"830\">Si quieres ir un paso m\u00e1s all\u00e1, te dejo un <strong data-start=\"770\" data-end=\"820\">archivo de ejemplo de <em data-start=\"794\" data-end=\"805\">flashbang<\/em> m\u00e1s completo<\/strong>, el cual:<\/p>\n<ul data-start=\"832\" data-end=\"1041\">\n<li data-start=\"832\" data-end=\"885\">\n<p data-start=\"834\" data-end=\"885\"><span style=\"color: #99cc00;\">Incluye <span style=\"color: #008000;\"><strong data-start=\"842\" data-end=\"862\">m\u00e1s validaciones<\/strong><\/span> de comportamiento \ud83e\udde0<\/span><\/p>\n<\/li>\n<li data-start=\"886\" data-end=\"965\">\n<p data-start=\"888\" data-end=\"965\"><span style=\"color: #99cc00;\">Utiliza un<span style=\"color: #008000;\"> <strong data-start=\"899\" data-end=\"918\">screenshot real<\/strong><\/span> para mejorar el efecto de encandilamiento \ud83d\udcf8<\/span><\/p>\n<\/li>\n<li data-start=\"966\" data-end=\"1041\">\n<p data-start=\"968\" data-end=\"1041\"><span style=\"color: #99cc00;\">Presenta una implementaci\u00f3n m\u00e1s cercana a un uso real dentro del gameplay<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1043\" data-end=\"1133\">\ud83d\udc49 Puedes descargarlo desde <strong data-start=\"1046\" data-end=\"1095\">este enlace , <\/strong>\u00e1brelo en Range y presiona WSAD para moverte y Space bar para lanzar la granada<\/p>\n<p style=\"text-align: center;\" data-start=\"1043\" data-end=\"1133\"><span class=\"shared-files-shortcode-admin-list shared-files-shortcode-admin-list-file shared-files-shortcode-1069\" title=\"&lt;div class=&quot;shared-files-embed-6a2066f18614f shared-files-main-container&quot; data-elem-class=&quot;shared-files-embed-6a2066f18614f&quot; data-search-type=&quot;0&quot; data-post-id=&quot;716&quot;&gt;&lt;div class=&quot;shared-files-search&quot;&gt;&lt;ul class=&quot;shared-files-main-file-list&quot;&gt;&lt;li class=&quot;shared-files-card-1069&quot;&gt;&lt;div class=&quot;shared-files-main-elements&quot;&gt;&lt;div class=&quot;shared-files-main-elements-left&quot; style=&quot;background-image: url(https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/shared-files\/img\/2020\/zip.svg);&quot;&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-main-elements-right&quot;&gt;&lt;a class=&quot;shared-files-file-title&quot;  data-file-type=&quot;&quot;  data-file-url=&quot;\/blog\/uploads\/shared-files\/1069\/?FlashBang_effect_01.zip&quot;  data-external-url=&quot;&quot;  data-image-url=&quot;&quot; href=&quot;\/blog\/uploads\/shared-files\/1069\/?FlashBang_effect_01.zip&quot; target=&quot;_blank&quot;&gt;FlashBang effect &#8211; Sample file&lt;\/a&gt;&lt;span class=&quot;shared-file-size&quot;&gt;186.16 KB&lt;\/span&gt;&lt;span class=&quot;shared-file-date&quot;&gt;March 18, 2026&lt;\/span&gt;&lt;div class=&quot;shared-files-download-counter&quot;&gt;&lt;span&gt;Downloads: 92&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-download-button-container&quot;&gt;&lt;a href=&quot;\/blog\/uploads\/shared-files\/1069\/?FlashBang_effect_01.zip&amp;download=1&quot; class=&quot;shared-files-download-button&quot;  download&gt;Download&lt;\/a&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-edit-actions&quot;&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;\/li&gt;&lt;\/ul&gt;&lt;\/div&gt;&lt;\/div&gt;\"><div class=\"shared-files-embed-6a2066f19d0c6 shared-files-main-container\" data-elem-class=\"shared-files-embed-6a2066f19d0c6\" data-search-type=\"0\" data-post-id=\"1069\"><div class=\"shared-files-search\"><ul class=\"shared-files-main-file-list\"><li class=\"shared-files-card-1069\"><div class=\"shared-files-main-elements\"><div class=\"shared-files-main-elements-left\" style=\"background-image: url(https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/shared-files\/img\/2020\/zip.svg);\"><\/div><div class=\"shared-files-main-elements-right\"><a class=\"shared-files-file-title\"  data-file-type=\"\"  data-file-url=\"\/blog\/uploads\/shared-files\/1069\/?FlashBang_effect_01.zip\"  data-external-url=\"\"  data-image-url=\"\" href=\"\/blog\/uploads\/shared-files\/1069\/?FlashBang_effect_01.zip\" target=\"_blank\">FlashBang effect &#8211; Sample file<\/a><span class=\"shared-file-size\">186.16 KB<\/span><span class=\"shared-file-date\">March 18, 2026<\/span><div class=\"shared-files-download-counter\"><span>Downloads: 92<\/span><\/div><div class=\"shared-files-download-button-container\"><a href=\"\/blog\/uploads\/shared-files\/1069\/?FlashBang_effect_01.zip&download=1\" class=\"shared-files-download-button\"  download>Download<\/a><\/div><div class=\"shared-files-edit-actions\"><\/div><\/div><\/div><\/li><\/ul><\/div><\/div><\/span><\/p>\n<p data-start=\"1135\" data-end=\"1290\">Espero que este material te sea de utilidad y te sirva como base para <strong data-start=\"1205\" data-end=\"1256\">seguir explorando y creando tus propios efectos<\/strong> dentro de Range Game Engine \ud83d\ude04\ud83c\udfae.<\/p>\n<p data-start=\"1292\" data-end=\"1330\" data-is-last-node=\"\" data-is-only-node=\"\">\u00a1Nos leemos en el pr\u00f3ximo tutorial! \ud83d\ude80<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83e\udde9 Introducci\u00f3n En el desarrollo de entornos interactivos, los efectos visuales juegan un papel fundamental para comunicar estados, eventos y retroalimentaci\u00f3n al usuario. M\u00e1s all\u00e1 de su uso est\u00e9tico, estos elementos permiten mejorar la comprensi\u00f3n de lo que ocurre dentro de una escena y enriquecen la experiencia de interacci\u00f3n. En este tutorial, trabajaremos en la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":761,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[136],"tags":[147,148],"class_list":["post-716","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-efectos","tag-fx"],"jetpack_featured_media_url":"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/flashBangHeader.gif","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=716"}],"version-history":[{"count":31,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/716\/revisions"}],"predecessor-version":[{"id":1142,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/716\/revisions\/1142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media\/761"}],"wp:attachment":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}