{"id":822,"date":"2026-01-29T09:00:36","date_gmt":"2026-01-29T09:00:36","guid":{"rendered":"https:\/\/salvador.mata.com.mx\/blog\/?p=822"},"modified":"2026-03-18T19:20:56","modified_gmt":"2026-03-18T19:20:56","slug":"arrastrar-objetos-con-el-mouse-en-range-upbge","status":"publish","type":"post","link":"https:\/\/salvador.mata.com.mx\/blog\/2026\/01\/29\/arrastrar-objetos-con-el-mouse-en-range-upbge\/","title":{"rendered":"Arrastrar objetos con el mouse en Range \/ UPBGE"},"content":{"rendered":"<p data-start=\"216\" data-end=\"489\">Este es un <strong data-start=\"227\" data-end=\"255\">archivo bastante antiguo<\/strong> que obtuve hace algunos a\u00f1os desde los foros de <strong data-start=\"304\" data-end=\"323\">Blender Artists<\/strong> (aproximadamente hace cinco a\u00f1os). Lamentablemente ya no recuerdo el enlace original del foro \ud83d\ude05, pero la buena noticia es que <strong data-start=\"451\" data-end=\"488\">sigue siendo totalmente funcional con unos cambios m\u00ednimos<\/strong>.<\/p>\n<p data-start=\"491\" data-end=\"712\">El archivo funciona sin problemas en <strong data-start=\"528\" data-end=\"561\">versiones actuales de Range <\/strong>y tambi\u00e9n en el fork <strong data-start=\"583\" data-end=\"592\">UPBGE<\/strong> .<br data-start=\"647\" data-end=\"650\" \/>As\u00ed que no hay de qu\u00e9 preocuparse por temas de compatibilidad.<\/p>\n<hr data-start=\"714\" data-end=\"717\" \/>\n<h2 data-start=\"719\" data-end=\"757\">\u00bfQu\u00e9 hace este archivo <code data-start=\"745\" data-end=\"753\">.blend<\/code>? \ud83e\udd14<\/h2>\n<p style=\"text-align: center;\"><code>\n<div class=\"wp-block-presto-player-reusable-edit\"><!--presto-player:video_id=15--><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;:15,&quot;src&quot;:&quot;https:\\\/\\\/youtu.be\\\/STBNBrdP4Sk&quot;,&quot;preset&quot;:1,&quot;video_id&quot;:&quot;STBNBrdP4Sk&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\\\/STBNBrdP4Sk&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\/STBNBrdP4Sk?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\/STBNBrdP4Sk\"\n\t\tcss=\"\"\n\t\tclass=\"presto-video-id-15 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=\"STBNBrdP4Sk\"\n\t\tvideo-id=\"15\"\n\t\t\t\tplaysinline \n\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\/STBNBrdP4Sk?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 data-start=\"759\" data-end=\"915\">Tal como lo indica el t\u00edtulo, este archivo permite <strong data-start=\"810\" data-end=\"848\">tomar y mover objetos con el mouse<\/strong>.<br data-start=\"849\" data-end=\"852\" \/>Aunque, siendo m\u00e1s precisos, el funcionamiento es el siguiente:<\/p>\n<ul data-start=\"917\" data-end=\"1118\">\n<li data-start=\"917\" data-end=\"961\">\n<p data-start=\"919\" data-end=\"961\"><span style=\"color: #339966;\">Existe un objeto <strong data-start=\"936\" data-end=\"961\">parentado a la c\u00e1mara<\/strong><\/span><\/p>\n<\/li>\n<li data-start=\"962\" data-end=\"1019\">\n<p data-start=\"964\" data-end=\"1019\"><span style=\"color: #339966;\">Este objeto colisiona con otros elementos del escenario<\/span><\/p>\n<\/li>\n<li data-start=\"1020\" data-end=\"1118\">\n<p data-start=\"1022\" data-end=\"1118\"><span style=\"color: #339966;\">Solo los objetos que se encuentren <strong data-start=\"1057\" data-end=\"1095\">dentro de una distancia espec\u00edfica<\/strong> pueden ser \u201cagarrados\u201d<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1120\" data-end=\"1242\">De esta forma se evita tomar objetos que est\u00e9n demasiado lejos, logrando un comportamiento mucho m\u00e1s natural y controlado.<\/p>\n<hr data-start=\"1244\" data-end=\"1247\" \/>\n<h2 data-start=\"1249\" data-end=\"1278\">\u00bfPara qu\u00e9 puede servir? \ud83c\udfae<\/h2>\n<p data-start=\"1280\" data-end=\"1316\">Este ejemplo es muy \u00fatil tanto para:<\/p>\n<ul data-start=\"1318\" data-end=\"1449\">\n<li data-start=\"1318\" data-end=\"1374\">\n<p data-start=\"1320\" data-end=\"1374\"><span style=\"color: #339966;\"><strong data-start=\"1320\" data-end=\"1332\">Aprender<\/strong> c\u00f3mo implementar este tipo de interacci\u00f3n<\/span><\/p>\n<\/li>\n<li data-start=\"1375\" data-end=\"1449\">\n<p data-start=\"1377\" data-end=\"1449\"><span style=\"color: #339966;\"><strong data-start=\"1377\" data-end=\"1404\">Reutilizar directamente<\/strong> el sistema en tus propios proyectos de juego<\/span><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"1451\" data-end=\"1532\">Es una soluci\u00f3n sencilla, clara y f\u00e1cil de adaptar a distintos tipos de gameplay.<\/p>\n<h3 style=\"text-align: center;\" data-start=\"1451\" data-end=\"1532\"><strong>Descargalo desde aqui.<\/strong><\/h3>\n<p style=\"text-align: center;\"><span class=\"shared-files-shortcode-admin-list shared-files-shortcode-admin-list-file shared-files-shortcode-1046\" title=\"&lt;div class=&quot;shared-files-embed-69d295ec17e57 shared-files-main-container&quot; data-elem-class=&quot;shared-files-embed-69d295ec17e57&quot; data-search-type=&quot;0&quot; data-post-id=&quot;822&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-1046&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\/1046\/?grab.zip&quot;  data-external-url=&quot;&quot;  data-image-url=&quot;&quot; href=&quot;\/blog\/uploads\/shared-files\/1046\/?grab.zip&quot; target=&quot;_blank&quot;&gt;Agarrar \/ arrastrar objetos &#8211; Sample file&lt;\/a&gt;&lt;span class=&quot;shared-file-size&quot;&gt;143.54 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: 13&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\/1046\/?grab.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-69d295ec1fc24 shared-files-main-container\" data-elem-class=\"shared-files-embed-69d295ec1fc24\" data-search-type=\"0\" data-post-id=\"1046\"><div class=\"shared-files-search\"><ul class=\"shared-files-main-file-list\"><li class=\"shared-files-card-1046\"><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\/1046\/?grab.zip\"  data-external-url=\"\"  data-image-url=\"\" href=\"\/blog\/uploads\/shared-files\/1046\/?grab.zip\" target=\"_blank\">Agarrar \/ arrastrar objetos &#8211; Sample file<\/a><span class=\"shared-file-size\">143.54 KB<\/span><span class=\"shared-file-date\">March 18, 2026<\/span><div class=\"shared-files-download-counter\"><span>Downloads: 13<\/span><\/div><div class=\"shared-files-download-button-container\"><a href=\"\/blog\/uploads\/shared-files\/1046\/?grab.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<hr \/>\n<h3 data-start=\"127\" data-end=\"170\">\u26a0\ufe0f Nota importante sobre compatibilidad<\/h3>\n<p data-start=\"172\" data-end=\"411\">Toma en cuenta un detalle importante: algunos archivos como este que vas a descargar <strong data-start=\"257\" data-end=\"322\">fueron creados originalmente en versiones antiguas de Blender<\/strong>, por lo que <strong data-start=\"335\" data-end=\"373\">podr\u00edan no funcionar correctamente<\/strong> en <strong data-start=\"389\" data-end=\"410\">Range Game Engine<\/strong>.<\/p>\n<p data-start=\"413\" data-end=\"468\">Si eso ocurre, la soluci\u00f3n suele ser bastante sencilla:<\/p>\n<ul data-start=\"470\" data-end=\"570\">\n<li data-start=\"470\" data-end=\"502\">\n<p data-start=\"472\" data-end=\"502\"><span style=\"color: #339966;\">Abre los scripts en <strong data-start=\"492\" data-end=\"502\">Python<\/strong><\/span><\/p>\n<\/li>\n<li data-start=\"503\" data-end=\"570\">\n<p data-start=\"505\" data-end=\"570\"><span style=\"color: #339966;\">Sustituye cualquier referencia que diga <strong data-start=\"545\" data-end=\"554\"><code data-start=\"547\" data-end=\"552\">bge<\/code><\/strong> por <\/span><strong data-start=\"559\" data-end=\"570\"><code data-start=\"561\" data-end=\"568\"><span style=\"color: #339966;\">Range<\/span><\/code><\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"572\" data-end=\"675\">En la mayor\u00eda de los casos, con ese simple cambio el proyecto vuelve a funcionar sin mayores problemas.<\/p>\n<hr data-start=\"677\" data-end=\"680\" \/>\n<h3 data-start=\"682\" data-end=\"725\">\ud83d\udee0\ufe0f Ejemplo r\u00e1pido del cambio en Python<\/h3>\n<p data-start=\"727\" data-end=\"757\"><strong><span style=\"color: #99cc00;\">C\u00f3digo original (BGE cl\u00e1sico):<\/span><\/strong><\/p>\n<div class=\"contain-inline-size rounded-2xl corner-superellipse\/1.1 relative bg-token-sidebar-surface-primary\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\">\n<blockquote><p><span style=\"color: #339966;\"><code class=\"whitespace-pre! language-python\"><span class=\"hljs-keyword\">import<\/span> bge<\/code><\/span><\/p>\n<p><span style=\"color: #339966;\">cont = bge.logic.getCurrentController()<\/span><br \/>\n<span style=\"color: #339966;\">own = cont.owner<\/span><\/p><\/blockquote>\n<\/div>\n<\/div>\n<div class=\"contain-inline-size rounded-2xl corner-superellipse\/1.1 relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl\/main:top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><span style=\"color: #99cc00;\">C\u00f3digo adaptado a <strong data-start=\"861\" data-end=\"882\">Range Game Engine<\/strong>:<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\">\n<blockquote><p><span style=\"color: #339966;\"><code class=\"whitespace-pre! language-python\"><span class=\"hljs-keyword\">import<\/span> Range<\/code><\/span><\/p>\n<p><span style=\"color: #339966;\">cont = Range.logic.getCurrentController()<\/span><br \/>\n<span style=\"color: #339966;\">own = cont.owner<\/span><\/p><\/blockquote>\n<\/div>\n<\/div>\n<p data-start=\"973\" data-end=\"1132\">Como puedes ver, el cambio es m\u00ednimo y directo.<br data-start=\"1020\" data-end=\"1023\" \/>La l\u00f3gica del script permanece intacta, solo se actualiza el <strong data-start=\"1084\" data-end=\"1097\">namespace<\/strong> para que sea compatible con Range.<\/p>\n<hr data-start=\"1134\" data-end=\"1137\" \/>\n<p data-start=\"1139\" data-end=\"1316\" data-is-last-node=\"\" data-is-only-node=\"\">Este tipo de ajustes es muy com\u00fan cuando reutilizamos ejemplos antiguos, pero tambi\u00e9n es una excelente oportunidad para <strong data-start=\"1259\" data-end=\"1313\">entender mejor c\u00f3mo funciona el motor internamente<\/strong> \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este es un archivo bastante antiguo que obtuve hace algunos a\u00f1os desde los foros de Blender Artists (aproximadamente hace cinco a\u00f1os). Lamentablemente ya no recuerdo el enlace original del foro \ud83d\ude05, pero la buena noticia es que sigue siendo totalmente funcional con unos cambios m\u00ednimos. El archivo funciona sin problemas en versiones actuales de Range [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":823,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[150],"tags":[157],"class_list":["post-822","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-resources","tag-recursos"],"jetpack_featured_media_url":"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/05335-grabobjects_bge-upbge.gif","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/822","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=822"}],"version-history":[{"count":3,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/822\/revisions"}],"predecessor-version":[{"id":1049,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/822\/revisions\/1049"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media\/823"}],"wp:attachment":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}