{"id":859,"date":"2024-09-30T00:00:00","date_gmt":"2024-09-29T23:00:00","guid":{"rendered":"https:\/\/jorgeturiel.es\/?p=859"},"modified":"2025-02-17T09:30:18","modified_gmt":"2025-02-17T08:30:18","slug":"telepong-con-castle-game-engine-parte-1","status":"publish","type":"post","link":"https:\/\/jorgeturiel.es\/?p=859","title":{"rendered":"TelePong con Castle Game Engine. Parte 1"},"content":{"rendered":"\n<p>Pong o TelePong fue un juego creado por Atari. Es considerado el primer juego comercial con \u00e9xito, lanzado el 29 de noviembre de 1972 (fuente <a href=\"https:\/\/es.wikipedia.org\/wiki\/Pong\">wikipedia<\/a>).<\/p>\n\n\n\n<p>Recuerdo ser un ni\u00f1o que apenas iba al colegio y jugar a este juego en el televisor, con un mandos que ten\u00edan un potenci\u00f3metro el cual giraba para mover la barra, que estaban unidos a una peque\u00f1a caja met\u00e1lica, que a su vez se conectaba a la televisi\u00f3n. Todo ello construido por mi <a href=\"https:\/\/www.ea1js.es\/\">padre<\/a>.<\/p>\n\n\n\n<p>Este m\u00edtico juego, hoy en d\u00eda puede ser recreado de una manera r\u00e1pida y sencilla usando un motor gr\u00e1fico. En este caso usaremos <a href=\"https:\/\/castle-engine.io\/\">Castle Game Engine<\/a>, del cual ya he hablado en <a href=\"https:\/\/jorgeturiel.es\/?cat=57\">otras entradas<\/a> de este blog. Para ello haremos uso de su motor de f\u00edsicas.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Creando el proyecto.<\/h2>\n\n\n\n<p>Empieza instalando, sino lo tienes, Castle Game Engine, tal como se explica en esta <a href=\"https:\/\/jorgeturiel.es\/?p=623\">entrada<\/a>.<\/p>\n\n\n\n<p>Empieza creando un nuevo proyecto vac\u00edo. Rellena los campos <em>Project Name<\/em> y <em>Project Caption<\/em>, con el nombre que quieras. Te recomiendo usar los mismos que he puesto yo, f\u00edjate en la imagen siguiente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"922\" height=\"627\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-155628.png\" alt=\"\" class=\"wp-image-861\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-155628.png 922w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-155628-300x204.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-155628-768x522.png 768w\" sizes=\"auto, (max-width: 922px) 100vw, 922px\" \/><figcaption class=\"wp-element-caption\">Creando TelePong<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Ahora, haz doble <em>click <\/em>en la vista <em>main<\/em>, para empezar.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"742\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-160412-1024x742.png\" alt=\"\" class=\"wp-image-862\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-160412-1024x742.png 1024w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-160412-300x217.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-160412-768x556.png 768w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-160412.png 1237w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Lo primero es a\u00f1adir la vista 2D, tenemos que a\u00f1adir el componente llamado <em>ViewPort<\/em>. Para ello pulsa con el bot\u00f3n izquierdo sobre <em>Group<\/em>, y en el men\u00fa contextual selecciona <em>Add User Interface<\/em>, y por \u00faltimo, dentro de este selecciona <em>Viewport(2D)(TCastleViewPort)<\/em>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"841\" height=\"683\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-215723.png\" alt=\"\" class=\"wp-image-863\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-215723.png 841w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-215723-300x244.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-215723-768x624.png 768w\" sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><figcaption class=\"wp-element-caption\">A\u00f1adir Viewport2D<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Como en la versi\u00f3n original del juego el fondo es negro, vamos a replicarlo. Selecciona <em>Viewport1<\/em> y en la ventana de propiedades cambia la propiedad <em>BackgroundColor<\/em> al valor 000000. Y borra el elemento <em>Plane1<\/em>.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"392\" height=\"252\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220046-1.png\" alt=\"\" class=\"wp-image-866\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220046-1.png 392w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220046-1-300x193.png 300w\" sizes=\"auto, (max-width: 392px) 100vw, 392px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"478\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220108.png\" alt=\"\" class=\"wp-image-867\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220108.png 498w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220108-300x288.png 300w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Preparando el terreno de juego.<\/h2>\n\n\n\n<p>Es momento de crear el terreno de juego, que estaba compuesto por dos l\u00edneas o barras, una en la parte superior y otra en la inferior. A\u00f1ade dos elementos TCastleBox. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"477\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220759-1024x477.png\" alt=\"\" class=\"wp-image-868\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220759-1024x477.png 1024w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220759-300x140.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220759-768x358.png 768w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-15-220759.png 1056w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Ponles de nombre, <em>LadoSuperior<\/em> y <em>LadoInferior. <\/em>Ajusta su propiedad <em>Material<\/em> al valor <em>pmUntil<\/em>, as\u00ed como el color al valor <em>FFFFF.<\/em> Sit\u00faa cada uno de ellos en su lugar. El lado superior en la parte de arriba y el lado inferior en la parte inferior. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"487\" height=\"465\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152043.png\" alt=\"\" class=\"wp-image-870\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152043.png 487w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152043-300x286.png 300w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"476\" height=\"476\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152120.png\" alt=\"\" class=\"wp-image-871\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152120.png 476w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152120-300x300.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-152120-150x150.png 150w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"715\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-151905-1024x715.png\" alt=\"\" class=\"wp-image-869\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-151905-1024x715.png 1024w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-151905-300x210.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-151905-768x536.png 768w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-151905.png 1068w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Aspecto de la pantalla con las paredes laterales.<\/figcaption><\/figure>\n\n\n\n<p>Ahora crearemos los l\u00edmites lateras. Para ello, tambi\u00e9n, usaremos dos <em>CastleBox,<\/em> con el color blanco. Los llamaremos <em>LadoIzquierdo <\/em>y <em>LadoDerecho<\/em>.<\/p>\n\n\n\n<p>Estas son las propiedades de estos dos nuevos elementos.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"597\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153039.png\" alt=\"\" class=\"wp-image-872\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153039.png 480w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153039-241x300.png 241w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><figcaption class=\"wp-element-caption\">Propiedades lado derecho<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"485\" height=\"601\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153201.png\" alt=\"\" class=\"wp-image-874\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153201.png 485w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153201-242x300.png 242w\" sizes=\"auto, (max-width: 485px) 100vw, 485px\" \/><figcaption class=\"wp-element-caption\">Propiedades lado izquierdo<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Deber\u00eda quedar con un aspecto similar a esta imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1011\" height=\"816\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153300.png\" alt=\"\" class=\"wp-image-876\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153300.png 1011w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153300-300x242.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-153300-768x620.png 768w\" sizes=\"auto, (max-width: 1011px) 100vw, 1011px\" \/><figcaption class=\"wp-element-caption\">Aspecto del juego con todos los lados.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Jugadores.<\/h3>\n\n\n\n<p>Vamos a a\u00f1adir los jugadores. Para ello, nuevamente, vamos a a\u00f1adir dos <em>TCastleBox<\/em>. Se llamar\u00e1n <em>Player1<\/em> y <em>Player2<\/em>. Aseg\u00farate que su propiedad material es igual a <em>pmUntil<\/em>. El tama\u00f1o ser\u00e1 10 en X, 100 en Y. El color ser\u00e1 <em>FFFFFF<\/em>, blanco. <em>Player1 <\/em>lo vamos a situar a la izquierda de la pantalla, por tanto <em>Player2 <\/em>ser\u00e1 a la derecha. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"487\" height=\"457\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230728.png\" alt=\"\" class=\"wp-image-879\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230728.png 487w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230728-300x282.png 300w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"482\" height=\"457\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230744.png\" alt=\"\" class=\"wp-image-880\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230744.png 482w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230744-300x284.png 300w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Por \u00faltimo vamos a a\u00f1adir la pelota. Para ello a\u00f1ade una elemento <em>TCastleSphere<\/em>, ajusta su radio a 10, por medio de la propiedad <em>Radius<\/em>, y como en los elementos anteriores aseg\u00farate que su propiedad <em>Material<\/em> es igual a <em>pmUntil<\/em>. Ajusta su color a blanco, en la propiedad <em>Color<\/em> pon el valor <em>FFFFFF.<\/em> Para terminar cambia su nombre a <em>Pelota.<\/em><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"414\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230939-1024x414.png\" alt=\"\" class=\"wp-image-881\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230939-1024x414.png 1024w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230939-300x121.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230939-768x311.png 768w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-230939.png 1130w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"482\" height=\"792\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231118.png\" alt=\"\" class=\"wp-image-882\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231118.png 482w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231118-183x300.png 183w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Marcador.<\/h3>\n\n\n\n<p>Para crear el marcador usaremos el elemento <em>TCastleLabel<\/em><\/p>\n\n\n\n<p>Al ser un elemento de tipo <em>User Interface<\/em>, este se a\u00f1ade haciendo click con el bot\u00f3n derecho sobre <em>ViewPort<\/em>. A\u00f1ade dos etiquetas y ponles de nombre <em>MarcadorPlayer1 <\/em> y <em>MarcadorPlayer2<\/em>. Ajusta su color a blanco (<em>FFFFFF<\/em>) y ponlas en la parte superior. Ya que el jugador 1 lo hemos situado a la izquierda, coloca arriba a al izquierda la etiqueda <em>MarcadorPlayer1<\/em>. Ajusta el tama\u00f1o de fuente en su propiedad <em>FontSize<\/em> al valor 10 y la propiedad <em> FontScale<\/em> tambi\u00e9n a 10. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"982\" height=\"657\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232133.png\" alt=\"\" class=\"wp-image-885\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232133.png 982w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232133-300x201.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232133-768x514.png 768w\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">A\u00f1adiendo comportamientos y f\u00edsica.<\/h2>\n\n\n\n<p>Vamos a a\u00f1adir comportamiento y f\u00edsica a los l\u00edmites del juego. De manera que la pelota pueda rebotar en ellos y tambi\u00e9n gestionar cuando la pelota colisiones con los l\u00edmites laterales, de esta manera sabremos que un jugador consigui\u00f3 un punto.<\/p>\n\n\n\n<p>Empezamos por los lados, selecciona uno de ellos en el \u00e1rbol, y pulsa el bot\u00f3n derecho para a\u00f1adir un comportamiento. Selecciona <em>Add Behavior<\/em>, <em>Physics<\/em>, <em>Collider 2D<\/em>, <em>Mesh<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"271\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231521-1024x271.png\" alt=\"\" class=\"wp-image-883\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231521-1024x271.png 1024w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231521-300x79.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231521-768x203.png 768w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231521-1536x406.png 1536w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-231521.png 1601w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Se crearan dos componentes tal como muestra la imagen siguiente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"401\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232824.png\" alt=\"\" class=\"wp-image-886\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232824.png 388w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232824-290x300.png 290w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/figure>\n<\/div>\n\n\n<p>Selecciona <em>RigidBody1<\/em>, y en su propiedades desmarca la propiedad <em>Gravity<\/em> para que su valor sea <em>False<\/em>. Con esto conseguimos que no se vea afectada por la gravedad, la cual, en un mundo 2D, es hacia abajo de la pantalla, en la coordenada y negativa. Sino desmarcamos esta opci\u00f3n el lado se caer\u00eda.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"492\" height=\"511\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232848.png\" alt=\"\" class=\"wp-image-887\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232848.png 492w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-21-232848-289x300.png 289w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/figure>\n<\/div>\n\n\n<p>Haz los mismo en los 4 lados.<\/p>\n\n\n\n<p>En el caso de los jugadores, tambi\u00e9n a\u00f1adiremos f\u00edsica y seleccionaremos  <em>Mesh<\/em>,  y la pelota seleccionaremos <em>Box<\/em>,. Recuerda, que debes desmarcar la opci\u00f3n <em>Gravity<\/em>, en todos ellos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Probando la f\u00edsica<\/h3>\n\n\n\n<p>Modifica las propiedades de la pelota de la siguiente manera. En su <em>RigidBody<\/em>,  ajusta su velocidad lineal con el valor 500 500 0, y <em>LinerVelocityDamp <\/em> a 0. Con estos ajustes, estamos indicado que la pelota se mover\u00e1 con una velocidad linea de 500 en el eje X, 500 en el eje Y, y 0 en el eje Z, y con <em>LinerVelocityDamp<\/em> igual a 0, lo que indicamos es que factor de reducci\u00f3n de velocidad es 0, por lo cual la velocidad aplicada no se ver\u00e1 reducida.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"482\" height=\"481\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-195232.png\" alt=\"\" class=\"wp-image-894\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-195232.png 482w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-195232-300x300.png 300w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-195232-150x150.png 150w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><figcaption class=\"wp-element-caption\"><em>RigidBody<\/em> de la pelota<\/figcaption><\/figure>\n<\/div>\n\n\n<p>En su <em>SphereCollider<\/em> cambia la propiedad Friction a 0, para que su coeficiente de fricci\u00f3n sea 0. Y ajusta su su propiedad <em>Restitution<\/em> sea 1, lo que indica su capacidad de rebotar o elasticidad. Puedes poner valor en su masa o dejarlo tal como est\u00e1. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"493\" height=\"385\" src=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-200809.png\" alt=\"\" class=\"wp-image-895\" srcset=\"https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-200809.png 493w, https:\/\/jorgeturiel.es\/wp-content\/uploads\/2024\/09\/Captura-de-pantalla-2024-09-22-200809-300x234.png 300w\" sizes=\"auto, (max-width: 493px) 100vw, 493px\" \/><figcaption class=\"wp-element-caption\"><em>SphereCollider<\/em>  de la pelota<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Ahora pulsa el bot\u00f3n verde  en la parte superior del editor. Esto ejecutara, solamente el motor de f\u00edsicas, y podr\u00e1s como afecta a los elementos, sin tener que ejecutar el programa. Aunque tambi\u00e9n puedes ejecutarlo si as\u00ed lo deseas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resumiendo<\/h2>\n\n\n\n<p>En esta parte, hemos visto como se puede configurar la f\u00edsica de los elementos que hayas a\u00f1adido. <\/p>\n\n\n\n<p>La diferencia en usar TMeshcollider con otro ajuste, est\u00e1 en que este modo cuando se produce la colisi\u00f3n este no se ve afectado por la f\u00edsica (velocidad, masa, etc.). Si, por ejemplo, los jugadores tuvieran TBoxCollider, al chocar la pelota con ellos, estos de mover\u00edan, rotar\u00edan, etc. en funci\u00f3n de la masa que colisiones con ellos, la velocidad, el \u00e1ngulo, etc. <\/p>\n\n\n\n<p>En la segunda parte programaremos, usando c\u00f3digo, el juego. Pero como ver\u00e1s como con muy poquito c\u00f3digo tendremos el juego funcionando.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El juego Pong, creado por Atari en 1972, nos sirve como introducci\u00f3n al Castle Game Engine y su motor de f\u00edsicas<\/p>\n","protected":false},"author":2,"featured_media":893,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,56,61],"tags":[49,23,21,24],"class_list":["post-859","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-castle-game-engine","category-cge","category-free-pascal","tag-castle-game-engine","tag-lazarus","tag-pascal","tag-programacion"],"_links":{"self":[{"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/posts\/859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=859"}],"version-history":[{"count":17,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/posts\/859\/revisions"}],"predecessor-version":[{"id":996,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/posts\/859\/revisions\/996"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=\/wp\/v2\/media\/893"}],"wp:attachment":[{"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jorgeturiel.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}