User prompt
Sí puntero está encima de UI el cubo se eliminará, remarca esto dándole un tinte rojo al cubo ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Agrega a puntero, este siempre estará en la posición de toque del jugador con transparencia 0
User prompt
Agrégale un límite a la posición del cubo en la parte superior
User prompt
Haz que el cubo entre los cruces de lado tengo menor offset siendo 0 (según el eje) si está en el medio
User prompt
Elimina comentarios simples
User prompt
Elimina comentarios simples
User prompt
Hay zonas donde el arrastre del cubo no puede colocarse debido a la funcionalidad de separación. Haz lo siguiente: cuando esté en el centro la separación es menor
User prompt
Aún sigue pidiendo colocarse encima
User prompt
Haz que cubo una vez entra en gameplay tenga un colisionador con Ui para que evitar que entre en esa zona
User prompt
Haz que el cubo no se coloque en Ui
User prompt
Haz que cuando se arrastre el cubo en ui siempre este debajo y si se suelta en este lugar el cubo no e coloca
User prompt
Agrégale suavidad al arrastre sin tweet plugin
User prompt
Agrégale suavidad al arrastre ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Haz que el cambio de un lado a otro sea suave y no brusco ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
haz que el arrastre del cubo tenga una separación según la esquina de gameplay: Si está en la esquina superior derecha el tower se separa 200 pixeles arriba y a la derecha, así parscada esquina
User prompt
Crea un objeto llamado Gameplay que ocupe 4/5 de la pantalla en la parte superior
Code edit (2 edits merged)
Please save this source code
User prompt
Optimiza el código
User prompt
Crea un objeto llamado UI que ocupe 1/5 de la pantalla en el eje Y y este en todo el largo. Cololocalo en la parte inferoor
Code edit (1 edits merged)
Please save this source code
User prompt
Haz que la torre esté separado 20 pixeles a la izquierda y 20 abajo cuando se arrastra
User prompt
Elimina el cubo que se genera en la parte superior, haz que la posición de aparición inicial de tower sea el botón de creación
User prompt
Agrega un BG detrás de los botones de tower y haz que el displsy dela torre se centre
User prompt
Agrega un objeto llamado torre de prueba. agrega un botón en la parte inferior, con el mismo asset de la torre, que al mantener presionado crea un clon que se puede arrastrar y colocar en el mundo
User prompt
Agrega un objeto llamado torre de prueba, agrega un botón en la parte inferior que al mantener presionado crea un clon que se puede arrastrar y colocar en el mundo
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Gameplay = Container.expand(function () { var self = Container.call(this); var gameplayGraphics = self.attachAsset('gameplayBackground', { anchorX: 0.5, anchorY: 0.5 }); return self; }); var Tower = Container.expand(function () { var self = Container.call(this); var towerGraphics = self.attachAsset('testTower', { anchorX: 0.5, anchorY: 0.5 }); return self; }); var UI = Container.expand(function () { var self = Container.call(this); var uiGraphics = self.attachAsset('uiBackground', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var draggedTower = null; var isDragging = false; var gameplay = game.addChild(new Gameplay()); gameplay.x = 1024; gameplay.y = 1093; var ui = game.addChild(new UI()); ui.x = 1024; ui.y = 2459; var buttonBG = game.addChild(LK.getAsset('BGbuttonTower', { anchorX: 0.5, anchorY: 0.5 })); buttonBG.x = 1024; buttonBG.y = 2600; var puntero = game.addChild(LK.getAsset('Puntero', { anchorX: 0.5, anchorY: 0.5 })); puntero.x = 1024; puntero.y = 1366; puntero.alpha = 0; var dragButton = game.addChild(new Tower()); dragButton.x = 1024; dragButton.y = 2600; dragButton.down = function (x, y, obj) { isDragging = true; draggedTower = game.addChild(new Tower()); draggedTower.x = 1024; draggedTower.y = 2600; draggedTower.alpha = 0.7; }; // Game move handler for dragging game.move = function (x, y, obj) { puntero.x = x; puntero.y = y; if (isDragging && draggedTower) { var offsetX = 0; var offsetY = 0; var gameplayLeft = gameplay.x - gameplay.width / 2; var gameplayRight = gameplay.x + gameplay.width / 2; var gameplayTop = gameplay.y - gameplay.height / 2; var gameplayBottom = gameplay.y + gameplay.height / 2; var gameplayCenterX = gameplay.x; var gameplayCenterY = gameplay.y; var distanceFromCenterX = Math.abs(x - gameplayCenterX); var distanceFromCenterY = Math.abs(y - gameplayCenterY); var maxDistanceX = gameplay.width / 2; var maxDistanceY = gameplay.height / 2; var normalizedDistanceX = distanceFromCenterX / maxDistanceX; var normalizedDistanceY = distanceFromCenterY / maxDistanceY; var maxOffset = 200; var offsetMagnitudeX = maxOffset * normalizedDistanceX; var offsetMagnitudeY = maxOffset * normalizedDistanceY; if (x >= gameplayCenterX && y <= gameplayCenterY) { offsetX = offsetMagnitudeX; offsetY = -offsetMagnitudeY; } else if (x <= gameplayCenterX && y <= gameplayCenterY) { offsetX = -offsetMagnitudeX; offsetY = -offsetMagnitudeY; } else if (x <= gameplayCenterX && y >= gameplayCenterY) { offsetX = -offsetMagnitudeX; offsetY = offsetMagnitudeY; } else if (x >= gameplayCenterX && y >= gameplayCenterY) { offsetX = offsetMagnitudeX; offsetY = offsetMagnitudeY; } var targetX = x + offsetX; var targetY = y + offsetY; var uiTop = ui.y - ui.height / 2; var uiBottom = ui.y + ui.height / 2; var uiLeft = ui.x - ui.width / 2; var uiRight = ui.x + ui.width / 2; if (targetY > uiTop) { targetY = uiTop - 50; } if (targetY < gameplayTop) { targetY = gameplayTop + 50; } if (targetX < uiLeft) { targetX = uiLeft + 50; } if (targetX > uiRight) { targetX = uiRight - 50; } var uiTopCheck = ui.y - ui.height / 2; var uiBottomCheck = ui.y + ui.height / 2; var uiLeftCheck = ui.x - ui.width / 2; var uiRightCheck = ui.x + ui.width / 2; var pointerInUI = puntero.x >= uiLeftCheck && puntero.x <= uiRightCheck && puntero.y >= uiTopCheck && puntero.y <= uiBottomCheck; if (pointerInUI) { if (draggedTower.tint !== 0xff0000) { tween.stop(draggedTower, { tint: true }); tween(draggedTower, { tint: 0xff0000 }, { duration: 200 }); } } else { if (draggedTower.tint !== 0xffffff) { tween.stop(draggedTower, { tint: true }); tween(draggedTower, { tint: 0xffffff }, { duration: 200 }); } } var smoothness = 0.15; draggedTower.x += (targetX - draggedTower.x) * smoothness; draggedTower.y += (targetY - draggedTower.y) * smoothness; } }; // Game release handler game.up = function (x, y, obj) { if (isDragging && draggedTower) { var gameplayLeft = gameplay.x - gameplay.width / 2; var gameplayRight = gameplay.x + gameplay.width / 2; var gameplayTop = gameplay.y - gameplay.height / 2; var gameplayBottom = gameplay.y + gameplay.height / 2; var uiTop = ui.y - ui.height / 2; var uiBottom = ui.y + ui.height / 2; var uiLeft = ui.x - ui.width / 2; var uiRight = ui.x + ui.width / 2; var uiTopCheck = ui.y - ui.height / 2; var uiBottomCheck = ui.y + ui.height / 2; var uiLeftCheck = ui.x - ui.width / 2; var uiRightCheck = ui.x + ui.width / 2; var pointerInUI = puntero.x >= uiLeftCheck && puntero.x <= uiRightCheck && puntero.y >= uiTopCheck && puntero.y <= uiBottomCheck; var towerInUI = draggedTower.x >= uiLeft && draggedTower.x <= uiRight && draggedTower.y >= uiTop && draggedTower.y <= uiBottom; if (pointerInUI || towerInUI) { draggedTower.destroy(); } else if (draggedTower.x >= gameplayLeft && draggedTower.x <= gameplayRight && draggedTower.y >= gameplayTop && draggedTower.y <= gameplayBottom && draggedTower.y >= gameplayTop) { draggedTower.alpha = 1.0; draggedTower.tint = 0xffffff; } else { draggedTower.destroy(); } isDragging = false; draggedTower = null; } };
===================================================================
--- original.js
+++ change.js
@@ -1,5 +1,10 @@
/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
* Classes
****/
var Gameplay = Container.expand(function () {
var self = Container.call(this);
@@ -119,8 +124,36 @@
}
if (targetX > uiRight) {
targetX = uiRight - 50;
}
+ var uiTopCheck = ui.y - ui.height / 2;
+ var uiBottomCheck = ui.y + ui.height / 2;
+ var uiLeftCheck = ui.x - ui.width / 2;
+ var uiRightCheck = ui.x + ui.width / 2;
+ var pointerInUI = puntero.x >= uiLeftCheck && puntero.x <= uiRightCheck && puntero.y >= uiTopCheck && puntero.y <= uiBottomCheck;
+ if (pointerInUI) {
+ if (draggedTower.tint !== 0xff0000) {
+ tween.stop(draggedTower, {
+ tint: true
+ });
+ tween(draggedTower, {
+ tint: 0xff0000
+ }, {
+ duration: 200
+ });
+ }
+ } else {
+ if (draggedTower.tint !== 0xffffff) {
+ tween.stop(draggedTower, {
+ tint: true
+ });
+ tween(draggedTower, {
+ tint: 0xffffff
+ }, {
+ duration: 200
+ });
+ }
+ }
var smoothness = 0.15;
draggedTower.x += (targetX - draggedTower.x) * smoothness;
draggedTower.y += (targetY - draggedTower.y) * smoothness;
}
@@ -135,11 +168,19 @@
var uiTop = ui.y - ui.height / 2;
var uiBottom = ui.y + ui.height / 2;
var uiLeft = ui.x - ui.width / 2;
var uiRight = ui.x + ui.width / 2;
+ var uiTopCheck = ui.y - ui.height / 2;
+ var uiBottomCheck = ui.y + ui.height / 2;
+ var uiLeftCheck = ui.x - ui.width / 2;
+ var uiRightCheck = ui.x + ui.width / 2;
+ var pointerInUI = puntero.x >= uiLeftCheck && puntero.x <= uiRightCheck && puntero.y >= uiTopCheck && puntero.y <= uiBottomCheck;
var towerInUI = draggedTower.x >= uiLeft && draggedTower.x <= uiRight && draggedTower.y >= uiTop && draggedTower.y <= uiBottom;
- if (draggedTower.x >= gameplayLeft && draggedTower.x <= gameplayRight && draggedTower.y >= gameplayTop && draggedTower.y <= gameplayBottom && !towerInUI && draggedTower.y >= gameplayTop) {
+ if (pointerInUI || towerInUI) {
+ draggedTower.destroy();
+ } else if (draggedTower.x >= gameplayLeft && draggedTower.x <= gameplayRight && draggedTower.y >= gameplayTop && draggedTower.y <= gameplayBottom && draggedTower.y >= gameplayTop) {
draggedTower.alpha = 1.0;
+ draggedTower.tint = 0xffffff;
} else {
draggedTower.destroy();
}
isDragging = false;