Code edit (5 edits merged)
Please save this source code
User prompt
add a new button at bottom right for punch
Code edit (5 edits merged)
Please save this source code
User prompt
only move the human player with joystick
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: base is not defined' in or related to this line: 'var dx = localPos.x - base.x;' Line Number: 34
User prompt
Please fix the bug: 'ReferenceError: base is not defined' in or related to this line: 'var maxDistance = base.width / 2; // Max distance knob can move from center' Line Number: 31
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: joystick.knob is undefined' in or related to this line: 'var joystickDx = joystick.knob.x;' Line Number: 188
User prompt
make the player move using the joystick
Code edit (1 edits merged)
Please save this source code
User prompt
instruction knob.intersects(localPos) isn't normal, the knob should follow the user move until the base limit
User prompt
fix the joystick
User prompt
Please fix the bug: 'TypeError: knob.hitTest is not a function' in or related to this line: 'if (knob.hitTest(localPos)) {' Line Number: 34
User prompt
replace swipe system by the joystick system
User prompt
Please fix the bug: 'TypeError: knob.containsPoint is not a function' in or related to this line: 'if (knob.containsPoint(localPos)) {' Line Number: 34
User prompt
add a control joystick at the bottom left
Code edit (16 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: punchDistance is not defined' in or related to this line: 'self.leftArm.height += punchDistance;' Line Number: 119
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
log player.width when down
Code edit (3 edits merged)
Please save this source code
User prompt
set also swipeStart in 'down' event
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ var Joystick = Container.expand(function () { var self = Container.call(this); self.base = self.attachAsset('joystickBase', { anchorX: 0.5, anchorY: 0.5, alpha: 0.7 }); self.knob = self.attachAsset('joystickKnob', { anchorX: 0.5, anchorY: 0.5, alpha: 0.9 }); self.x = 220; // Position joystick on the bottom left self.y = game.height - 220; var dragging = false; var dragStart = null; var maxDistance = self.base.width / 2 - self.knob.width / 2; // Max distance knob can move from center self.down = function (x, y, obj) { var localPos = self.toLocal(obj.global); var dx = localPos.x - self.base.x; var dy = localPos.y - self.base.y; if (Math.sqrt(dx * dx + dy * dy) <= maxDistance) { dragging = true; dragStart = { x: x, y: y }; } }; self.move = function (x, y, obj) { if (dragging) { var localPos = self.toLocal(obj.global); var dx = localPos.x - self.base.x; var dy = localPos.y - self.base.y; var distance = Math.sqrt(dx * dx + dy * dy); var angle = Math.atan2(dy, dx); if (distance > maxDistance) { dx = Math.cos(angle) * maxDistance; dy = Math.sin(angle) * maxDistance; } self.knob.x = dx; self.knob.y = dy; } }; self.up = function (x, y, obj) { if (dragging) { self.knob.x = 0; self.knob.y = 0; dragging = false; } }; }); // Assets initialization is handled automatically by the LK engine. // Player class var Player = Container.expand(function (isHuman) { var self = Container.call(this); self.isHuman = isHuman; self.body = new Container(); game.addChild(self.body); // Define punch distance for punching animation var punchDistance = 50; // Left Arm self.leftForearm = self.body.attachAsset('forearm', { anchorX: 0.5, anchorY: 0.5, x: -110, y: -125, width: 80, rotation: -Math.PI * 0.2 }); self.leftHand = self.body.attachAsset('hand', { anchorX: 0.5, anchorY: 0.5, x: -110, y: -250, width: 80, height: 180, rotation: -Math.PI * 0.05 }); self.leftArm = self.body.attachAsset('arm', { anchorX: 0.5, anchorY: 0, x: -120, y: -120 }); // Right Arm self.rightForearm = self.body.attachAsset('forearm', { anchorX: 0.5, anchorY: 0.5, x: 110, y: -125, scaleX: -1, width: 80, rotation: Math.PI * 0.2 }); self.rightHand = self.body.attachAsset('hand', { anchorX: 0.5, anchorY: 0.5, x: 100, y: -250, scaleX: -1, width: 80, height: 180, rotation: Math.PI * 0.05 }); self.rightArm = self.body.attachAsset('arm', { anchorX: 0.5, anchorY: 0, x: 120, y: -120, scaleX: -1 }); self.torso = self.body.attachAsset('body', { anchorX: 0.5, anchorY: 0.5 }); self.head = self.body.attachAsset('head', { anchorX: 0.5, anchorY: 0.5, y: -40 }); // Player movement speed self.speed = 10; // Punch function to handle punching action self.punch = function (isLeft) { var arm = isLeft ? self.leftArm : self.rightArm; var forearm = isLeft ? self.leftForearm : self.rightForearm; var hand = isLeft ? self.leftHand : self.rightHand; // Punch animation logic LK.setTimeout(function () { /* arm.height += punchDistance; arm.y -= punchDistance; forearm.height += punchDistance; forearm.y -= punchDistance * 2; // Move forearm up for punch hand.y -= punchDistance * 2; // Move hand up for punch */ /* self.leftArm.height += punchDistance; self.leftArm.y -= punchDistance; self.leftForearm.height += punchDistance; self.leftForearm.y -= punchDistance * 1.5; // Move forearm up for punch self.leftForearm.rotation = -Math.PI * 0.1; //-Math.PI * 0.2 self.leftHand.x += 5; // Move hand up for punch self.leftHand.y -= punchDistance * 2; // Move hand up for punch */ arm.height += punchDistance; arm.y -= punchDistance; forearm.height += punchDistance; forearm.y -= punchDistance * 1.5; // Move forearm up for punch forearm.rotation *= 0.5; //= -Math.PI * 0.1; //-Math.PI * 0.2 hand.x += 5; // Move hand up for punch hand.y -= punchDistance * 2; // Move hand up for punch }, 100); LK.setTimeout(function () { /* arm.height -= punchDistance; arm.y += punchDistance; forearm.height -= punchDistance; forearm.y += punchDistance * 2; // Reset forearm position hand.y += punchDistance * 2; // Reset hand position */ arm.height -= punchDistance; arm.y += punchDistance; forearm.height -= punchDistance; forearm.y += punchDistance * 1.5; // Move forearm up for punch forearm.rotation *= 2; //-Math.PI * 0.2 hand.x -= 5; // Move hand up for punch hand.y += punchDistance * 2; // Move hand up for punch }, 200); }; // Update player position based on input self.update = function () { // Only move player if it's human controlled via joystick if (self.isHuman) { // Calculate movement based on joystick position var joystickDx = joystick.knob.x; var joystickDy = joystick.knob.y; // Normalize joystick input to determine direction var distance = Math.sqrt(joystickDx * joystickDx + joystickDy * joystickDy); if (distance > 0) { var normalizedDx = joystickDx / distance; var normalizedDy = joystickDy / distance; self.x += normalizedDx * self.speed; self.y += normalizedDy * self.speed; } } // Update body position and rotation self.body.x = self.x; self.body.y = self.y; self.body.rotation = self.rotation; }; }); var PunchButton = Container.expand(function () { var self = Container.call(this); var buttonGraphics = self.attachAsset('punchButton', { anchorX: 0.5, anchorY: 0.5 }); self.x = game.width - 150; // Position button on the bottom right self.y = game.height - 300; self.down = function (x, y, obj) { player.punch(true); // Trigger punch action for the player }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ var punchButton = game.addChild(new PunchButton()); // Initialize ring in the game scene var ring = game.addChild(LK.getAsset('ring', { x: 1024, // Center horizontally y: 1366, // Center vertically anchorX: 0.5, anchorY: 0.5 })); var joystick = game.addChild(new Joystick()); var dragNode = null; // Initialize player var player = game.addChild(new Player(true)); player.x = 1024; // Center horizontally player.y = 2000; // Position towards the bottom // Initialize a single fixed enemy var enemy = game.addChild(new Player()); enemy.x = 1024; // Center horizontally enemy.y = 1066; // Center vertically in the middle of the ring enemy.rotation = Math.PI; // Update the single fixed enemy enemy.update(); var touchPosition = null; var swipeStart = null; var swipeEnd = null; game.down = function (x, y, obj) { // Removed swipe start logic for joystick implementation }; game.move = function (x, y, obj) { // Removed swipe tracking logic for joystick implementation }; game.up = function (x, y, obj) { // Removed swipe end logic and player movement calculation for joystick implementation }; // Game update function game.update = function () { // This section has been removed to prevent redundant player movement handling. // Spawn enemies // Check for collision with player // Removed game over trigger to prevent ending the game on player collision with enemy };
===================================================================
--- original.js
+++ change.js
@@ -200,9 +200,9 @@
anchorX: 0.5,
anchorY: 0.5
});
self.x = game.width - 150; // Position button on the bottom right
- self.y = game.height - 100;
+ self.y = game.height - 300;
self.down = function (x, y, obj) {
player.punch(true); // Trigger punch action for the player
};
});
clear
basic light gray convex round button with a red boxing glove icon. UI
Un gant de boxe bleu vu de dessus. video game
basic light round convex gray button with a raised blue shield icon.. UI
un éclair. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
remove
a basic white heart.. game icon
A boxer has lost the match..
man boxer with red gloves is KO on the ring..