Code edit (2 edits merged)
Please save this source code
User prompt
when punching, also change the width of the head to simulate the tilt
Code edit (2 edits merged)
Please save this source code
User prompt
when punching, move of the head like boxers do
User prompt
prevent players to be too close
User prompt
add a bit of randomness to the mini movements
Code edit (1 edits merged)
Please save this source code
User prompt
when idmle, animate the players with mini movements of head and arms
User prompt
when punching, randomly choose left or right arm
Code edit (5 edits merged)
Please save this source code
User prompt
in player update, also compute the angleToOpponent for the enemy
Code edit (3 edits merged)
Please save this source code
User prompt
when player moves, update its rotatoin to always face the opponent
Code edit (1 edits merged)
Please save this source code
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
/****
* Classes
****/
var Joystick = Container.expand(function () {
var self = Container.call(this);
var base = self.attachAsset('joystickBase', {
anchorX: 0.5,
anchorY: 0.5
});
var knob = self.attachAsset('joystickKnob', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 200; // Position joystick on the bottom left
self.y = game.height - 200;
var dragging = false;
var dragStart = null;
var maxDistance = base.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 - base.x;
var dy = localPos.y - 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 - base.x;
var dy = localPos.y - 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;
}
knob.x = dx;
knob.y = dy;
}
};
self.up = function (x, y, obj) {
if (dragging) {
knob.x = 0;
knob.y = 0;
dragging = false;
}
};
});
// Assets initialization is handled automatically by the LK engine.
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
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 () {
// Movement logic will be handled in the game's update function
// Update player position based on speed and reduce speed progressively
self.x += self.speedX;
self.y += self.speedY;
// Apply deceleration to speed
self.speedX *= 0.95;
self.speedY *= 0.95;
// Update body position and rotation
self.body.x = self.x;
self.body.y = self.y;
self.body.rotation = self.rotation;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
// Initialize and add joystick to the game
var joystick = game.addChild(new Joystick());
// 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 dragNode = null;
// Initialize player
var player = game.addChild(new Player());
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
};
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..