hugoruscitti/pilas

View on GitHub
data/manual/colisiones/index.json

Summary

Maintainability
Test Coverage
{
    "content": "<h1 id=\"colisiones-fisicas\">Colisiones F\u00edsicas</h1>\n<p>Las colisiones te permite disparar acciones cuando dos o mas actores\nentran en contacto. Esto nos permite hacer que los personajes puedan\nchocar con enemigos o capturar objetos.</p>\n<h2 id=\"dos-tipos-de-colisiones\">Dos tipos de colisiones</h2>\n<p>En pilas-engine tenemos dos tipos de colisiones, hay\ncolisiones f\u00edsicas y colisiones programadas.</p>\n<p>Las <strong>colisiones f\u00edsicas</strong> son aquellas que generan una reacci\u00f3n que se puede\nvisualizar como una respuesta f\u00edsica, por ejemplo si creamos 5 cajas y las\nhacemos rebotar entre s\u00ed, estas ser\u00edan colisiones f\u00edsicas:</p>\n<p><img alt=\"\" src=\"../imagenes/colisiones/cajas.png\" /></p>\n<pre><code class=\"python\">cajas = pilas.actores.Caja() * 5\n</code></pre>\n\n<p>Podr\u00edamos decir que las colisiones f\u00edsicas son casi autom\u00e1ticas, las genera\nel mismo motor de f\u00edsica que trae pilas-engine sin mucho c\u00f3digo.</p>\n<p>En cambio, las <strong>colisiones programadas</strong> son aquellas que tienen una reacci\u00f3n\npor c\u00f3digo, y generalmente tienen que ver con la l\u00f3gica del juego (perder, ganar\npuntos, pasar de nivel etc..)</p>\n<p>Por ejemplo, una colisi\u00f3n programada sencilla se puede visualizar si creamos\nun personaje que se pueda mover con el mouse y se alimente comiendo bananas:</p>\n<p><img alt=\"\" src=\"../imagenes/colisiones/mono.png\" /></p>\n<pre><code class=\"python\">mono = pilas.actores.Mono()\nmono.aprender(&quot;Arrastrable&quot;)\nbananas = pilas.actores.Banana() * 10\n\ndef cuando_colisiona(mono, banana):\n    banana.eliminar()\n    mono.sonreir()\n\npilas.colisiones.agregar(mono, bananas, cuando_colisiona)\n</code></pre>\n\n<h2 id=\"modo-depuracion-fisica\">Modo depuraci\u00f3n f\u00edsica</h2>\n<p>El modo depuraci\u00f3n f\u00edsica nos permite observar las figuras f\u00edsicas de\ncada uno de los actores. Para activar este modo, pod\u00e9s pulsar la tecla <strong>F12</strong>\no simplemente hacer click sobre el \u00edcono \"mostrar figuras f\u00edsicas\":</p>\n<p><img alt=\"\" src=\"../imagenes/colisiones/depurador.png\" /></p>\n<p>Con este modo habilitado, vas a poder observar la figura de colisi\u00f3n\nque lo representa:</p>\n<p><img alt=\"\" src=\"../imagenes/colisiones/ejemplo.png\" /></p>\n<p>En color blanco aparecen las figuras f\u00edsicas, que al rebotar con otras\nproducir\u00e1n una reacci\u00f3n de choque y rebote. Y de color verde van a aparecer\nlos sensores.</p>\n<p>Los sensores son figuras f\u00edscias pero que no generan una reacci\u00f3n\nal momento del choque.</p>\n<h2 id=\"acceder-a-las-figuras-de-colision\">Acceder a las figuras de colisi\u00f3n</h2>\n<p>En muchos momentos vas a necesitar hacer ajustes sobre las figuras\nde colisi\u00f3n. Lo mas com\u00fan es cambiar el tama\u00f1o de las figuras (para ajustarlas\n  al tama\u00f1o del actor) o convertir las figuras a sensores.</p>\n<p>Para acceder a las figuras de colisi\u00f3n tienes que usar el atributo\n<code>figura_de_colisi\u00f3n</code> del actor, o bien cambiar su tama\u00f1o directamente\ncambiando el atributo <code>radio_de_colisi\u00f3n</code> por ejemplo:</p>\n<pre><code class=\"python\">mono = pilas.actores.Mono()\nmono.radio_de_colision = 30\nmono.radio_de_colision = 80\nmono.radio_de_colision = 10\n</code></pre>\n\n<p>Cada vez que asignes un valor al atributo <code>radio_de_colision</code>, pilas va a\ngenerar una circunferencia y la va a colocar como figura de colisi\u00f3n para el\nactor.</p>\n<h2 id=\"cambiando-las-figuras-de-colision\">Cambiando las figuras de colisi\u00f3n</h2>\n<p>En la mayor\u00eda de los casos la figura circular es la que mejor se ajusta\nal area de un actor.</p>\n<p>Sin embargo, hay algunos casos en donde necesitamos cambiar completamente\nla figura de colisi\u00f3n por otra.</p>\n<p>La forma mas sencilla de cambiar una figura por otra, es crear la figura\nf\u00edsica primero y luego asignarla a la propiedad <code>figura_de_colision</code> del\nactor:</p>\n<p><img alt=\"\" src=\"../imagenes/colisiones/figuras.png\" /></p>\n<p>Para construir este ejemplo constru\u00edmos dos actores, al primero lo dejamos\ntal cual, pero al segundo le cambiamos la figura de colisi\u00f3n por un rect\u00e1ngulo:</p>\n<pre><code class=\"python\">zanahoria_normal = pilas.actores.Zanahoria(x=-100)\n\nzanahoria = pilas.actores.Zanahoria(x=100)\nrectangulo = pilas.fisica.Rectangulo(0, 0, 40, 100, sensor=True, dinamica=False)\nzanahoria.figura_de_colision = rectangulo\n</code></pre>\n\n<h2 id=\"colisiones-con-etiquetas\">Colisiones con etiquetas</h2>\n<p>Ten en cuenta que existe un atajo para definir colisiones\nusando el concepto de etiquetas, que se ver\u00e1 en la siguiente\np\u00e1gina de este manual.</p>\n", 
    "url": "/colisiones/", 
    "language": "en", 
    "title": "Colisiones"
}