{"id":455,"date":"2025-10-23T21:30:39","date_gmt":"2025-10-23T21:30:39","guid":{"rendered":"https:\/\/salvador.mata.com.mx\/blog\/?p=455"},"modified":"2025-10-24T15:35:34","modified_gmt":"2025-10-24T15:35:34","slug":"aprendiendo-a-usar-mascaras-de-colision","status":"publish","type":"post","link":"https:\/\/salvador.mata.com.mx\/blog\/2025\/10\/23\/aprendiendo-a-usar-mascaras-de-colision\/","title":{"rendered":"Aprendiendo a usar m\u00e1scaras de colisi\u00f3n &#8211; RanGE"},"content":{"rendered":"<h1>Aprendiendo a usar m\u00e1scaras de colisi\u00f3n<\/h1>\n<h2>\ud83e\udde9 \u00bfPor qu\u00e9 aprender esto?<\/h2>\n<p>Si usas el motor de juegos de <strong>Blender<\/strong>, <strong>UPBGE<\/strong> o <strong>RanGE<\/strong>, seguro te has topado con problemas de rendimiento en alg\u00fan momento.<br \/>\nUno de los m\u00e1s comunes \u2014y menos comprendidos al inicio\u2014 es el <strong>manejo de las f\u00edsicas del juego<\/strong>: colisiones, part\u00edculas, ragdolls, etc.<\/p>\n<p>Cada vez que el motor corre, analiza constantemente todos los objetos en busca de colisiones.<br \/>\nSi no controlamos bien qu\u00e9 objetos deben o no colisionar, el motor gasta recursos en c\u00e1lculos innecesarios \u2699\ufe0f.<\/p>\n<h2>\ud83d\udca1 \u00bfQu\u00e9 son las m\u00e1scaras de colisi\u00f3n?<\/h2>\n<p>Las <strong>m\u00e1scaras de colisi\u00f3n (Collision Masks)<\/strong> sirven para <strong>decidir qu\u00e9 objetos pueden colisionar entre s\u00ed<\/strong>.<br \/>\nEsto permite optimizar el rendimiento del motor, especialmente en escenas grandes.<\/p>\n<p>Por ejemplo: imagina un edificio con <strong>dos pisos<\/strong>.<br \/>\nLas cajas del piso 1 nunca colisionar\u00e1n con las del piso 2, as\u00ed que podemos indicarle al motor que <strong>ignore<\/strong> esos c\u00e1lculos.<br \/>\nEsa simple configuraci\u00f3n puede mejorar mucho el rendimiento de tu juego.<\/p>\n<h2>\ud83e\uddea Ejercicio pr\u00e1ctico: usando m\u00e1scaras de colisi\u00f3n<\/h2>\n<p><em>\u2699\ufe0f Versi\u00f3n usada en este ejemplo: UPBGE 0.2.4b (puedes usar otra similar).<\/em><\/p>\n<h3>1\ufe0f\u20e3 Configura la escena base<\/h3>\n<ol>\n<li>Abre Blender.<br \/>\nLa escena inicial incluye un <strong>cubo<\/strong> y un <strong>plano<\/strong>.<br \/>\nSi no aparecen, cr\u00e9alos manualmente (<code>Shift + A \u2192 Mesh \u2192 Cube \/ Plane<\/code>).<\/li>\n<li>Aseg\u00farate de que el cubo quede sobre el plano.<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/mataii.wordpress.com\/wp-content\/uploads\/2021\/02\/6cf94-blender_2019-12-09_13-48-04.png\" \/><\/p>\n<h3>2\ufe0f\u20e3 Activa la simulaci\u00f3n f\u00edsica<\/h3>\n<ol>\n<li>Selecciona el cubo.<\/li>\n<li>En el panel <strong>Physics<\/strong>, cambia el tipo a <strong>Rigid Body<\/strong>. Esto har\u00e1 que el cubo reaccione a la gravedad.<\/li>\n<li>Presiona <strong>P<\/strong> (en la vista 3D) para probar la simulaci\u00f3n.<br \/>\nEl cubo caer\u00e1 y colisionar\u00e1 con el piso. Presiona <strong>Esc<\/strong> para detener el juego.<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/mataii.wordpress.com\/wp-content\/uploads\/2021\/09\/3df36-2019-12-09_13-42-52.gif\" \/><\/p>\n<h3>3\ufe0f\u20e3 Duplica el cubo<\/h3>\n<p>Duplica el cubo (<code>Shift + D<\/code>) para crear un segundo objeto: <strong>Cube.001<\/strong>.<br \/>\nAhora tienes dos cubos y un plano.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/mataii.wordpress.com\/wp-content\/uploads\/2021\/02\/6bc34-2019-12-09_15-20-05.gif\" \/><\/p>\n<h3>4\ufe0f\u20e3 Configura los grupos de colisi\u00f3n<\/h3>\n<p>Cada objeto puede pertenecer a un <strong>Collision Group<\/strong> (grupo de colisi\u00f3n).<br \/>\nEn el panel de f\u00edsicas, busca la secci\u00f3n <strong>Collision Bounds \u2192 Groups \/ Masks<\/strong>.<\/p>\n<p>Asigna lo siguiente:<\/p>\n<ul>\n<li><strong>Plano<\/strong> \u2192 Grupo 1<\/li>\n<li><strong>Cube<\/strong> \u2192 Grupo 2<\/li>\n<li><strong>Cube.001<\/strong> \u2192 Grupo 3<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/mataii.wordpress.com\/wp-content\/uploads\/2021\/09\/ffc6c-image-1.png\" \/><\/p>\n<h3>5\ufe0f\u20e3 Define las m\u00e1scaras de colisi\u00f3n<\/h3>\n<p>Ahora configuraremos qu\u00e9 objetos pueden colisionar entre s\u00ed:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n<tbody>\n<tr>\n<th>Objeto<\/th>\n<th>Con qui\u00e9n colisiona<\/th>\n<\/tr>\n<tr>\n<td>Plano<\/td>\n<td>Cube, Cube.001<\/td>\n<\/tr>\n<tr>\n<td>Cube<\/td>\n<td>Plano<\/td>\n<\/tr>\n<tr>\n<td>Cube.001<\/td>\n<td>Plano<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>En la <strong>Collision Mask<\/strong>, activa solo los botones que correspondan a los objetos con los que debe colisionar.<\/p>\n<p>Ejemplo:<br \/>\nEn el <strong>plano<\/strong>, activa solo los botones de los cubos (no el suyo).<br \/>\nEn cada <strong>cubo<\/strong>, activa solo el bot\u00f3n del plano.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/mataii.wordpress.com\/wp-content\/uploads\/2021\/09\/8c7f8-2019-12-09_16-07-12.gif\" \/><\/p>\n<h3>6\ufe0f\u20e3 Prueba la simulaci\u00f3n<\/h3>\n<p>Presiona <strong>P<\/strong> para iniciar el juego.<br \/>\nVer\u00e1s que ambos cubos colisionan con el piso, pero <strong>no entre ellos<\/strong>.<br \/>\nEsto confirma que las m\u00e1scaras funcionan correctamente \ud83c\udfaf.<\/p>\n<p>Si deseas que los cubos colisiones entre si, entonces las m\u00e1scaras de colision quedar\u00edan as\u00ed:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n<tbody>\n<tr>\n<th>Objeto<\/th>\n<th>Con qui\u00e9n colisiona<\/th>\n<\/tr>\n<tr>\n<td>Plano<\/td>\n<td>Cube, Cube.001<\/td>\n<\/tr>\n<tr>\n<td>Cube<\/td>\n<td>Plano, Cube.001<\/td>\n<\/tr>\n<tr>\n<td>Cube.001<\/td>\n<td>Plano, Cube<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Y el resultado ser\u00eda este:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/mataii.wordpress.com\/wp-content\/uploads\/2021\/09\/9f784-2019-12-09_15-56-55.gif\" \/><\/p>\n<h2>\ud83e\udde0 Conclusi\u00f3n<\/h2>\n<p>El uso correcto de las <strong>m\u00e1scaras de colisi\u00f3n<\/strong> es una t\u00e9cnica simple pero poderosa para <strong>optimizar el rendimiento<\/strong> de tus proyectos.<br \/>\nCuando las escenas crecen, estos ajustes evitan que el motor desperdicie recursos analizando objetos que nunca deber\u00edan interactuar.<\/p>\n<p>Aplica este principio siempre que trabajes con muchos objetos o niveles separados.<br \/>\nY recuerda: \u00a1cada optimizaci\u00f3n cuenta!<\/p>\n<p>\u00bfQuieres un ejemplo sencillo terminado de este ejercicio? Descargalo <a href=\"https:\/\/salvador.mata.com.mx\/blog\/uploads\/collision_mask.range\" target=\"_blank\" rel=\"noopener\">aqui <\/a><em>\ud83d\udc47<\/em><\/p>\n<p>\ud83d\udcac <em><strong>\u00bfTienes dudas o quieres aportar tu propio m\u00e9todo?<\/strong> D\u00e9jalo en los comentarios \ud83d\udc47\ud83d\ude42<\/em><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aprendiendo a usar m\u00e1scaras de colisi\u00f3n \ud83e\udde9 \u00bfPor qu\u00e9 aprender esto? Si usas el motor de juegos de Blender, UPBGE o RanGE, seguro te has topado con problemas de rendimiento en alg\u00fan momento. Uno de los m\u00e1s comunes \u2014y menos comprendidos al inicio\u2014 es el manejo de las f\u00edsicas del juego: colisiones, part\u00edculas, ragdolls, etc. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":463,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[81],"tags":[84],"class_list":["post-455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-g-dev","tag-range"],"_links":{"self":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/455","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=455"}],"version-history":[{"count":4,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/455\/revisions"}],"predecessor-version":[{"id":1131,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/455\/revisions\/1131"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media\/463"}],"wp:attachment":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}